در این پست قراره یاد بگیریم :
به برنامه مون فرم های جدید اضافه کنیم
فرم های جدید رو فراخوانی کنیم
مقدار هایی را از فرم اصلی (والد) به فرمهای بعدی (فرزندان) ارسال کنیم و برعکس این ماجرا
متغییر های Static و public تعریف کنیم و بین فرمها ازشون استفاده کنیم
یه پروژه جدید سی شارپ ایجاد کنید (بعضی ها هم به پروژه شون برن D: )
با ظاهر پروژه تون کار ندارم (میتونه هر ظاهری داشته باشه)
من اینجا یه فرم دارم که ده تا دکمه روش گذاشتم و قراره هر کدوم از این دکمه ها یه فرم دیگه رو فراخوانی و فرم اصلیم (والد) رو هم مخفی کنه.
و اینکه میخوام از فرم اصلیم یسری اطلاعات بفرستم به فرم دوم (فرزند) و بعد از انجام عملیاتی در فرم دوم میخوام دوباره یسری اطلاعات بفرستم به فرم اصلیم و به کمک این اطلاعات اعمالی رو انجام بدیم.
ارسال اطلاعاتی از فرم اصلی به فرمهای فرعی کار خیلی ساده ای هستش.
اکثر دوستان در برعکس این ماجرا یعنی ارسال از فرم فرزند به فرم والد مشکل دارن
برای شروع ابتدا میخوام یه فرم دیگه به برنامه اضافه کنم
از طریق کلیک راست کردن روی اسم پروژه ام در کادر Solutions و انتخاب Add و New Item از صفحه باز شده یه Windows Form جدید به اسم Form2 به پروژه اضافه میکنم
ابتدا فراخوانی کردن این فرم توسط دکمه ای که روش نوشتم 1 به دو شکل :
با این کد فرم بصورت عادی فراخوانی میشه:
Form2 v32 = new Form2();
v32.Show();
با کد زیر هم بعنوان بالاترین فرم برنامه فراخوانی میشه و اجازه دسترسی به فرمهای پشتی یا قبلی رو نمیده تا وقتی که اون فرم بسته شه
(تست کنید متوجه میشین)
Form2 v32 = new Form2();
v32.ShowDialog();
حالا میخواییم هم فرم دوم فراخوانی بشه و هم فرم اولی یا فرم اصلی محو بشه.
میدونید که ما اجازه بستن فرم اصلی یا والد رو نداریم چون در صورت بسته شدن کل برنامه متوقف خواهد شد
پس باید مخفیش کنیم
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.Show();
در هر مرحله تست بگیرید تا بهتر متوجه شین.
خوب تا اینجا مشکلی نیست.
حالا میخواییم یه مقداری به فرم دوم ارسال کنیم.
ابتدا در فرم دوم یه متغییر به صورت پابلیک یا عمومی تعریف میکنیم
public string a = "";
بعد در فرم اول کدهای دکمه ی فراخوانی فرممون به شکل زیر میشه
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.a = "Virus32";
v32.Show();
ولی اگه بخواییم برای یکی از اشیا هامون مقداری بفرستیم چی؟
برای استفاده از یک شی در فرم های دیگه ابتدا باید مقدار Modifiers اون شی رو برابر Public قرار بدیم
برای مثال من میخوام برای تکست باکسی که در فرم دومم قرار داده اسم خودمو بفرستم
ابتدا مقدار Modifiers اون رو Public میکنم و
Form1.ActiveForm.Visible = false;
Form2 v32 = new Form2();
v32.textBox1.Text = "Virus32";
v32.Show();
البته ما میتونیم بجز مقدار تنظیمات شی ها رو هم دستکاری کنیم
مثلا غیر فعال کردن
v32.textBox1.Enabled = false;
یا مخفی کردن
v32.textBox1.Visible = false;
یا هر چیزی که دل تنگت میخواهد علی جان :)
حالا قسمت سخت قضیه ^_^
ماجرا اینه که تمام دکمه های من بجز دکمه اولم در فرم اصلی غیر فعال بود
Enabled = false
حالا من میخوام به کمک دکمه ای که در فرم دومم قرار داره
(فرمی که بعد از فراخوانی به روش بالا بهش رسیدیم)
یه مقداری به فرم اصلیم (والد) بفرستم
بعد به کمک اون مقدار تعیین کنم که یکی از دکمه هام فعال یا غیر فعال بشه
برای اینکار ما باید ابتدا یه متغییر public یا عمومی و یک متغییر Static یا ایستا در فرم اصلی باید تعریف کنیم
(البته این v32 میتونه خصوصی یا private هم باشه)
public static string v32 = "";
public String coder
{
set
{
v32 = value;
}
}
حالا میخوام به کمک مقدار این متغییر ها مخفی یا نمایان بودن یا فعال یا غیر فعال بودن دکمه هامو تعیین کنم
ابتدا یه کلاس براش میسازم
public void unvis()
{
if (v32 == "1")
{
button2.Visible = false;
}
else
{
button2.Visible = true;
}
}
دستور دادم اگه مقدار یک بود دکمه دوم رو فعال کن اگر نه غیر فعالش کن
خوب این کلاس ساده ای هستش.
"برای دکمه های بعدی خودتون دست به کار شین"
ولی هربار که فرم اصلی نمایش داده شد این کلاس باید کار کنه
(منظور از نمایش داده شد فقط لود و اجرا شدن نیست)
پس این کلاس رو در قسمت Active فرم فراخوانیش میکنیم
کد :
private void Form1_Activated(object sender, EventArgs e)
{
unvis();
}
خوب کارمون تو فرم اصلی (والد) تموم شد.
برین به فرم دوم
یک دکمه بهش اضافه کنید
میخواییم این دکمه فرم خودش رو ببنده
فرم اصلی رو نمایش بده
و دکمه شماره دو در فرم اصلی رو فعال کنه
Form1 cd = new Form1();
cd.coder = "1";
cd.Show();
this.Close();
if (this.Owner != null)
{
this.Owner.Enabled = true;
}
کارها انجام شده بود این دکمه تقریبا کار خاصی انجام نداد
همونطور که میبینید به متغییر مون در فرم اصلی مقدار یک رو دادم
فرم دوم رو بست
فرم اصلی رو فعال کرد
یه تیکه کد رو جا انداختم برای خروج که اونو خودتون کشف کنید
این پست رو هم به خاطر دوست خوبمون آقا علی تکمیل کردم
باشد که رستگار شویم و حرفه ای D:
دریافت سورس پروژه
حجم: 47.3 کیلوبایت
حجم: 47.3 کیلوبایت
ایرانی همیشه سرافراز