PDA

View Full Version : سوال: چگونگي بستن فرمي كه قبلا باز شده از داخل فرمي ديگر



Programmer 1
دوشنبه 22 شهریور 1389, 22:43 عصر
سلام،

فرض كنيد فرمي داريم و دو دكمه ، وقتي دكمه اولي رو كليك مي كنم يك فرم ديگه باز ميشه ، تا اينجا كه مشكلي ندارم ولي من قصد دارم با زدن دكمه بعدي همون فرمي كه در حال

نمايش هست رو ببندم ، اينجا نمي دونم چه طوري بايد به شي فرم دسترسي پيدا كنم تا اون رو ببندم . دوستان راه حل چيه ؟

با تشكر /.

MoS4k1
سه شنبه 23 شهریور 1389, 00:20 صبح
Application.OpenForms["نام فرم"].Close();

اَرژنگ
سه شنبه 23 شهریور 1389, 04:44 صبح
سلام،

فرض كنيد فرمي داريم و دو دكمه ، وقتي دكمه اولي رو كليك مي كنم يك فرم ديگه باز ميشه ، تا اينجا كه مشكلي ندارم ولي من قصد دارم با زدن دكمه بعدي همون فرمي كه در حال

نمايش هست رو ببندم ، اينجا نمي دونم چه طوري بايد به شي فرم دسترسي پيدا كنم تا اون رو ببندم . دوستان راه حل چيه ؟

با تشكر /.
قسمتی که پررنگ کردم، سوال اصلی است، به اینکه از همان اول چطوری دسترسی بهش داشته باشید فکر کنید.

اَرژنگ
سه شنبه 23 شهریور 1389, 05:05 صبح
Application.OpenForms["نام فرم"].Close();

اگر هدف این است که برنامه‌نویسی یاد بگیرند این روش پیشنهاد نمیشه.
اگر هم که فقط هدف یکجوری یکچیزی سرهم کنند این روش پیشنهاد میشه.
آزادی انتخاب به کاربر است.

C Sharp
سه شنبه 23 شهریور 1389, 07:39 صبح
راه حل به رابطه ای که بین فرم اول و فرم دوم داره ، بستگی داره

در ظاهر یه رابطه Aggregation بینشون هست
که اگه اینطور باشه ، یک متغیر از نوع فرم دوم داخل کلاس فرم اول تعریف کنید
هنگام کلیک روی دکمه اول یک شئ جدید از فرم دوم ایجاد کنید و به این متغیر تخصیص بدین
و هنگام کلیک روی فرم دوم بوسیله این متغیر کلاس میتونید به فرم بازتون دسترسی داشته باشین



public partial class Form1 : Form
{
public Form2 _form2;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (_form2 == null || _form2.IsDisposed)
{
_form2 = new Form2();
_form2.Show();
}
}

private void button2_Click(object sender, EventArgs e)
{
if (_form2 != null && _form2.IsDisposed == false)
{
_form2.Close();
}
}
}

نامگذاریها رو بر اساس پروژه خودتون تغییر بدین

mostafa_shoakry
سه شنبه 23 شهریور 1389, 08:02 صبح
اگر هدف این است که برنامه‌نویسی یاد بگیرند این روش پیشنهاد نمیشه.

چرا بیشتر توضیح نمی دین؟ :گریه:

اَرژنگ
سه شنبه 23 شهریور 1389, 08:31 صبح
چرا بیشتر توضیح نمی دین؟ :گریه:
اگر به پست C Sharp توجه کنید، قابلیت کار کردن با اشیا را به خوبی نمیایش دادند.
با ۱۰ دقیقه تمرکز و امتحان کردن کد پستی C Sharp بیشتر از هر توضیحی یاد میگیرید.