با سلام
در حالت کلی اگر بخواهیم هر جای برنامه به فرم اصلی دسترسی داشته باشیم می توانیم با یک تغییر در کلاس اصلی (کلاس Program) و تابع اصلی (تابع Main) پروژه این کار را انجام دهیم.
برای این کار کد زیر که در فایل Program.cs و جود دارد:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new frmMain());
}
به کد زیر تغییر می دهیم:
public static frmMain myForm;
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
myForm = new frmMain();
Application.Run(myForm);
}
حالا مثلا در هنگام لود شدن فرم شماره دو در رویداد Load می توانیم به شکل زیر به فرم اصلی دسترسی داشته باشیم :
private void Form2_Load(object sender, EventArgs e)
{
Program.myForm.Text = "Form 2 Loaded";
}
حالا اگر بخواهیم به یک کنترل در فرم اصلی دسترسی داشته باشیم که منظور شما یک Textbox می باشد باید نوع Property کنترل مورد نظرمان را از private به public تغییر دهیم برای این کار به شکل زیر عمل می کنیم:
فرض کنیم اسم فرم اصلی ما MainForm و نام کنترل موردنظرمان txtFormName.
حالا باید فایل MainForm.Designer.cs پیدا کرده و کد زیر را در آن پیدا کنیم:
private System.Windows.Forms.TextBox txtCustomerName;
حالا فقط کافیست کلمه private را به puplic تغییر دهیم.
==========================================
حالا در هر جای پروژه برای تغییر متن کنترل txtFormName کافیست کد زیر را بنویسیم :
Program.txtFormName.Text = "Form 2 Loaded";
با تشکر