مخفی کردن فرم در سی شارپ
سلام دوستان خسته نباشید ، من در سی شارپ دو تا فرم دارم و در فرم اولی یه دکمه با عنوان Next قرار دادم و هروقت کاربر روی دکمه Next کلیک کنه فرم دوم براش باز میشه منتها من در فرم دومی یه دکمه با عنوان "مخفی کردن فرم اول" قرار دادم و میخام هر وقت کاربر روی این دکمه کلیک کرد فرم اول مخفی شود ممنون میشم راهنمایی کنید
5 پاسخ
سلام وقت شما بخیر دوست گرامی کلا موارد بالا رو انجام دادم ولی متاسفانه با پیغام زیر مواجه میشم ممنون میشم راهنمایی کنید
میتونی در فرم دوم یه property به صورت زیر تعریف کنی:
public partial class Form2 : Form
{
public Form ParenFormt{get;set;}
}
سپس در فرم یک در کد مربوط به رویداد کلیک دکمه next این property رو مقدار دهی کن:
public partial class Form1 : Form
{
private void buttonNext_Click(object sender, EventArgs e)
{
Form2 frm2=new Form2();
frm2.ParentForm=this;
frm2.Show();
}
}
حال برای مخفی کردن فرم اول در کد مربوط به رویداد کلیک دکمه «مخفی کردن فرم اول» بنویس:
public partial class Form2 : Form
{
public Form ParenFormt{get;set;}
private void buttonHideForm_Click(object sender, EventArgs e)
{
this.ParentForm.Hide();
}
}
همونطور که در تصویر مشخصه ParentForm مقدارش null هست. یعنی اینکه در Form1 قبل از فراخوانی Form2 اون رو مقدار دهی نکردی. به قطعه کد دومی که در جواب برات فرستادم خوب دقت کن.
public partial class Form1 : Form
{
private void buttonNext_Click(object sender, EventArgs e)
{
Form2 frm2=new Form2();
frm2.ParentForm=this; //این دستور حتما باید موجود باشه
frm2.Show();
}
}
یه نمونه برات ساختم. در لینک زیر می تونی دانلودش کنی:
به یک نکته توجه کنید که در اینجا بین فرم ها به هیچ وجه رابطه ی والد-فرزندی برقرار نیست. برای منطقی تر شدن نام گذاری ها، نام ویژگی ParentForm رو به FormToClose تغییر میدیم !!
درون فرم های دو و سه ویژگی FormToClose را قرار می دهیم:
namespace HideFormTest
{
public partial class Form2 : Form
{
public Form FormToClose { get; set; }
public Form2()
{
InitializeComponent();
}
}
}
//----------------------------------------------------------------
namespace HideFormTest
{
public partial class Form3 : Form
{
public Form FormToClose { get; set; }
public Form3()
{
InitializeComponent();
}
}
کد مربوط به رویداد کلیک دکمه ها برای مخفی کردن فرم ها در هر فرم های دو و سه مشابه هم هست. اونا رو به صورت زیر می نویسیم:
namespace HideFormTest
{
public partial class Form2 : Form
{
public Form FormToClose { get; set; }
public Form2()
{
InitializeComponent();
}
/****************************************************/
private void btnHide_Click(object sender, EventArgs e)
{
this.FormToClose.Hide();
}
/***************************************************/
}
}
//----------------------------------------------------------------------------
namespace HideFormTest
{
public partial class Form3 : Form
{
public Form FormToClose { get; set; }
public Form3()
{
InitializeComponent();
}
/*******************************************************/
private void btnHide_Click(object sender, EventArgs e)
{
this.FormToClose.Hide();
}
/*******************************************************/
}
}
حال به فرم یک بر میگردیم و ویژگی FormToClose را برای فرم های سه و دو به صورت زیر مقدار دهی میکنیم:
namespace HideFormTest
{
public partial class Form1 : Form
{
private void btnNext_Click(object sender, EventArgs e)
{
Form2 frm2 = new HideFormTest.Form2();
frm2.FormToClose = this;
frm2.Show();
Form3 frm3 = new HideFormTest.Form3();
frm3.FormToClose = frm2;
frm3.Show();
}
}
}
در لینک زیر میتونی برنامه رو ببینی:
ممنون از پاسختون دوست عزیز.من تو پروژه م سه فرم درج کردم و در فرم اولی یه دکمه با عنوان نمایش فرم ها قرار دادم و موقعی که کاربر رو این دکمه کلیک میکنه هر دو فرم دیگه نمایش داده میشه . من برای نمایش فرم ها از کد زیر استفاده کرده ام
Form2 form2=new Form2 (); form2.Show (); //-------------------------------------------- Form3 form3=new Form3 (); form3.Show ();
دوستان من تو فرم دومی یه دکمه با عنوان "مخفی کردن فرم اول" و در فرم سوم یه دکمه با عنوان "مخفی کردن فرم دوم" قرار داده ام و میخام کاربر وقتی رو این دکمه ها کلیک کرد فرم ها مخفی بشه .
یه نکته دوستان این دو فرم توسط فرم اولی نمایش داده شده و من به روش آقای Ramin T عمل کردم وبه نتیجه هم رسیدم منتها روش آقای Ramin T به این صورته که هر فرم فرم قبلیه خودش رو مخفی میکنه اونم به این صورت که تو فرم قبلی دستور مربوطه قید شود ولی در این جا چون هردو فرم توسط فرم اولی نمایش داده شده بنابراین من نمیخام تو فرم دوم دستوری بنویسم و بعد توسط فرم 3 مخفی کنم . من میخام بدون اینکه دستوری در قرم 2 بنویسم بااستفاده از فرم 3 فرم دومم رو مخفی کنم . ممنون میشم راهنمایی کنید