نحوه فراخوانی فرم اصلی و دیگر فرم ها در C#
شاید تا حالا برای فراخوانی صفحه آغازین برنامه تان که آن را در Visual Studio C# نوشته اید به مشکل برخورده باشید.
یا برای رفتن از فرمی به فرم دیگر بطوری که فرم جدید زمانی نمایان شود که فرم قبلی پنهان شده است.و این کار باعث از بین رفتن اطلاعات درون فرم ها (مانند محتوای TextBox ها) نشود.
در این آموزش قصد دارم تا یکی از مفیدترین راه هایی که برای انجام این کار وجود دارد را بیان کنم.
همانطور که می دانید فرم اصلی برنامه در Program.cs و توسط دستور
Application.Run(new Form1())
ایجاد می شود. اما هنگام فراخوانی Form1 در دیگر قسمت های برنامه با مشکل رو به رو خواهیم شد.
با بیان یک مثال ساده راه حل این مشکل را شرح می دهم.
ابتدا یک یک پروژه جدید Windows Form Application به زبان C# ایجاد کنید.File-->New-->Project
بطور پیشفرض اولین فرم شما Form1 خواهد بود. حال از قسمت Solution Explorer بر روی نام پروژه خود راست کلیک کنید و از قمست Add-->New Item یک Windows form دیگر را به برنامه اضافه کنید که بطور پیشفرض نامش Form2 می باشد.
برای دیدن عکس در اندازه واقعی روی آن کلیک کنید.
یک Button و یک TextBox برای هر یک از فرم ها قرار دهید.
حال از قسمت Solution Explorer بر روی Program.cs دوبار کلیک کنید تا صفحه مربوط به کدهای آن باز شود. سپس کدهای زیر را بصورتی که در ادامه نشان داده شده است به آن اضافه کنید.

static class Program
{
///
/// The main entry point for the application.
///
public static Form1 FirstForm;
public static Form2 SecondForm;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
FirstForm= new Form1();
SecondForm= new Form2();
Application.Run(FirstForm);
}
}
به اضافه شدن public static Form1 FirstForm و public static Form2 SecondForm و همچنین دو خط FirstForm = new Form1() و SecondForm= new Form2() توجه کنید.
همچنین به آرگومان Application.Run توجه کنید که بدون new نوشته می شود و عبارت Form1 هم در آن نوشته نشده است.
حال شما می توانید فرم ها را براحتی فراخوانی کنید.
مثلا در صفحه Form1 بر روی Button ایجاد شده دوبار کلیک کنید تا وارد کد های آن شوید و سپس کد های زیر را وارد کنید :

private void button1_Click(object sender, EventArgs e)
{
Program.SecondForm.Show();
this.Hide();
}
برای دیدن عکس در اندازه واقعی روی آن کلیک کنید.
و برای Form2 نیز به همچنین ، یعنی روی Button موجود در آن دوبار کلیک کنید و سپس کدهای زیر را وارد کنید :
private void button1_Click(object sender, EventArgs e)
{
Program.FirstForm.Show();
this.Hide();
}
حال برنامه را اجرا کنید. توجه کنید که محتوای داخل TextBox ها پس از برگشت به صفحه مربوطه ، تغییر نمی کنند.

