روش های دسترسی به کنترل های یک فرم در فرم دیگر

یک از روش های دسترسی به کنترل های یک فرم در داخل فرم دیگر ایجاد یک خصوصیت از نوع کنترلی است که می خواهیم به ان دسترسی داشته باشیم. بهتر است که یک مثال بزنیم. یک برنامه ویندوزی ایجاد کرده و یک فرم دیگر به آن اضافه کنید. به فرم اول یک کنترل button به فرم دوم یک کنترل textbox اضافه کنید. حال فرض کنید که می خواهید در داخل فرم اول به این کنترل textbox فرم دوم دسترسی داشته باشید و مقادیری به آن ارسال کنید. برای این منظور ابتدا یک خاصیت از نوع رشته (چون textbox مقادیر رشته را قبول می کند) در فرم دوم ایجاد کنید.

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public string Text
    {
        get { return this.textBox1.Text; }
       set { this.textBox1.Text = value; }
    }
}

سپس بر روی دکمه در فرم اول دو بار کلیک کرده و کدهای زیر را در داخل آن بنویسید :

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    frm.Text = "Hello, world.";
    frm.ShowDialog();
}

برنامه را اجرا کرده و بر روی دکمه کلیک کنید :
form-to-another-form
مشاهده می کنید که مقدار “Hello World” به کنترل textbox ارسال می شود.

یک روش دیگر این است که خاصیت modifier کنترلی که قرار است به آن دسترسی داشته باشیم (textBox) را برابر Public قرار داده و در رویداد کلیک دکمه در فرم اول کد زیر را بنویسید :

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    Control[] Control = frm.Controls.Find("textBox1", false);
    if (Control.Length > 0)
    {
        TextBox textBox = (TextBox)Control[0];
        textBox.Text = "www.w3-farsi.com";
    }

    frm.Show();
}

همانطور که در کد بالا مشاهده می کنید، نام کنترلی را که می خواهیم به آن دسترسی داشته باشیم را به متد find ارسال می کنیم. برنامه را اجرا و نتیجه را مشاهده کنید :
form-to-another-form-1