آموزش رفتن از یک فرم به فرم دیگر در سی شارپ
در این آموزش قصد دارم تا توضیح مختصری در مورد فرم ها در سی شارپ بیان کنم. و در ادامه در مورد رفتن از یک فرم به فرم دیگر در سی شارپ سخن خواهم گفت.
فرم چیست؟
ویندوز فرم ها در سی شارپ نقش همان پنجره ها در ویندوز را بازی می کنند یا می توان هر صفحه را در اپلیکیشن های ویندوزی، ویندوز فرم نامید.
بیشتر بخوانید: جابجایی بین اکتیویتی ها در اندروید
چگونگی جابجایی بین فرم ها در سی شارپ
آنچه در این آموزش دنبال آن هستید، آموزش جابجایی بین فرم های ویندوزی ( رفتن از یک فرم به فرم دیگر ) است. در تولید اپلیکیشن چه برای پلتفرم ویندوز و چه به دیگر پلتفرم ها، جابجایی بین آنها یکی از ضروری ترین آموزرش هاست.
یک پروژه از نوع Windows Form باز کنید و دو تا فرم به آن از منوی Project اضافه کنید.
من در این پروژه دوتا فرم با نام های Form1 و Form2 دارم. به Form1 یک Button اضافه کردم و قصد دارم ، با کلیک روی آن به Form2 منتقل داده شوم. برای چنین منظوری می توان از متدهای زیر استفاده کرد.
- Show
- ShowDialog
برای استفاده از این متدها باید از فرم مقصد یک نمونه در فرم مبدا ایجاد کنیم.
//رویداد کلیک
private void Button1_Click(object sender, EventArgs e)
{
//روش اول ایجاد شیء
new Form2().Show();
//روش دوم ایجاد شیء
Form2 form2=new Form2();
form2.Show();
}
روش دوم استفاده از ShowDialog
//رویداد کلیک
private void Button1_Click(object sender, EventArgs e)
{
//روش اول ایجاد شیء
new Form2().ShowDialog();
//روش دوم ایجاد شیء
Form2 form2=new Form2();
form2.ShowDialog();
}
تفاوت Show و ShowDialog در چیست؟
زمانی که از Show استفاده می کنید می توانید به فرم پدر (مبدأ) و فرم مقصد(فرزند) دسترسی داشته باشید. یعنی به محض استارت شدن فرم مقصد، تونایی این را خواهید داشت تا بتوانید با هردو فرم فرزند و پدر تعامل داشته باشید.
موقعی که از ShowDialog استفاده می کنید کاربر نمی تواند با فرم مبدأ تعامل داشته باشد و برای دسترسی به آن باید فرم فرزند بسته شود.
برای بستن فرم می توانید از متد Close استفاده کنید.
قصد دارم با نمایش داده شدن فرم مقصد فرم مبدأ مخفی شود.
این کار هم آسان است و کافی است قبل از صدا زدن فرم مقصد از this.Hide استفاده کنید. این به این معنی است که به برنامه اعلام می کنید اول فرم جاری را مخفی کن سپس فرم مقصد را نمایش بده.
private void Button1_Click(object sender, EventArgs e)
{
this.Hide();
new Form2().ShowDialog();
}
در انتها می توانید پروژه را بصورت رایگان دانلود کنید:
Comments (25)
سلام ، ممنون از راهنمایی شما
حالا اگه بخوایم فرم یک Hide بشه باید چه دستوری رو بنویسیم ؟
و بعد اینکه فرم دو باز شد و ما کارمون توش تموم شد ، چطور میتونیم دوباره به فرم 1 برگردیم ؟ ( بدون اینکه برنامه دوباره اجرا بشه
سلام برای سوال اولتون موقعی که فرم نمایش داده میشه از دستور this.hide() استفاده کنید.
سوال دومتون باید از فرم یک در فرم دو نمونه بسازید و بعد بعد از اتمام کارتون فرم یک را باز کنید.
سلام
اگر بخواهیم از محتوای دکمه رادیویی فرم اول در فرم دوم استفاده کنیم چه دستوری باید نوشت
سلام منظورتون اینه که چک کنید radio button در فرم اول تیک خورده یا نه؟
مثلا در صورتیکه فرم اول تیک خورده باشه محتوای آن در فیلد دوم نمایش داده شود
جواب منو ندادید
سلام وقت بخیر
در صورتی که بخواهیم از محتوای دکمه رادیویی فرم اول در فرم دوم استفاده کنیم چه دستوری باید نوشت
سلام
میخواستم یه فرم داشته باشم با چند buttom که هر دکمه بهیک فرم جدید داخل فرم اول باز کنه و فرم های باز شده مانند تب های مختلف داخل فرم اول نشان داده شوند. ممنون میشم راهنمایی کنید🙏
من اسم فرم دو رو میزنم نمیاره یعنی نام فرمم form2هست ولی مینویسم که بره تو فرم یک عبارت form1 رو نمیاره
میدونین خطا از کجای تنظیمات برنامست اسم فرم اولمم form1 هستش ولی علت اینکه خطا میده رو نمیدونم
فرم دو رو پاک کنید و دوباره ایجاد کنید احتمالا اسمش رو بعدا تغییر دادین
یا نمونه پروژه رو دانلود کنید
سلام وقت بخیر
دو تا فرم دارم که با کلیک کردن یک دکمه از فرم اول، فرم دوم باز می شود (فرم اول Hide می شود) در ادامه اگر فرم دوم OK کنم اینبار فرم دوم Hide می شود و فرم اول ظاهر می شود در این حالت متغیرهای private درفرم اول null می گردد. این متغیرها ربطی به فرم دوم ندارن وتا قبل از ظاهر شدن فرم دوم null نیستن ولی وقتی فرم اول برای بار دوم ظاهر می شود این متغیرها null میگردد. میشه دلیلش بهم توضیح بدین؟
ممنون
سلام خسته نباشید
سه تا فرم داریم که از دوتا فرم آن به فرم سومی متصل میشیم راهی هس که به فرم سوم که از فرم 1و2 بهش وصل شدیم شرط بگذاریم وبگیم از فرم 1 یا 2 بهش وصل شدیم
سلام بله میشه
میتونید از متد SentToBak استفاده کنیدو مثلا میخاهیم از فرم یک بریم فرم سه کدش باید به شکل زیر باش
Form3 fa = new Form3();
fa.SendToBack("form1");
fa.ShowDialog();
حال در فرم سه باید متد زیر رو قرار بدید
internal void SendToBack(string v)
{
if (v == "form1")
MessageBox.Show("شما از فرم یک به این صفحه اومدید");
}
همین کار رو برای فرم دو نیز انجام بدید
سلام خسته نباشید خدا خیرتون بده خیلی به من برای امتحان ترمم کمک ورد انشالله خداوند مهربان در زندگیتون خیر و برکت زیادی را عنایت کنه
سلام درود بر شما!
خواهش میکنم دوست عزیز باعث افتخار ماست
باسلام و وقت بخیر.من در یک فرم اطلاعات کالا از جمله(کد و نام گروه کالا و نام کالا) رو دارم که نام گروه کالا را در کمبوباکسی که به جدول گروه کالا در دیتابیس بایند شده، نمایش دادم. حال میخام در فرم دوم وقتی سطری از گریدویو رو انتخاب کردم اطلاعات رو در فرم قبل نشون بده ، سوال اینکه نام گروه کالا در گریدویو رو در فرم دیگه نشون نمیده بلکه یه نام دیگه رو نشون میده.
ممنون میشم راهنمایی کنید
سلام تو چت آنلاین پیام بدید تا راهنمایی کنم
سلام خسته نباشید یک سوال داشتم اونم اینه که من انتقال اطلاعات از فرم اول به فرم دوم میتونم ایجاد کنم ولی از فرم دوم میخوام به فرم اول ایجاد کنم یعنی بعد از اینکه فرم 2 با دکمه ای در فرم 1 باز شد نمیتونم اطلاعات در تکس باکس واقع در فرم 2 رو وارد فرم 1 کنم میشه راهنماییم کنین؟؟؟
اطلاعات تکست باکس در فرم2 کی پر میشه با لود شدن فرم دو
سلام
ممنون از توضیحاتتون؛ میخواستم بدونم چطور میشود با باز شدن فرم سوم، فرم دوم بسته شود؟
نمونه: هنگامی که در Notepad فرم Find (به عنوان فرم دوم) باز است، میتوان فرم Replace (به عنوان فرم سوم) را باز کرد و همزمان فرم Find بسته میشود.
سلام
قبل از باز شدن فرم باید دستور this.Hide() رو قرار بدید
سلام مجدد و ممنون از پاسختون
من فکر میکنم خوب توضیح ندادم.
فرمهای دوم و سوم از طریق فرم اول صدا زده میشوند. بنابراین اگر قبل از باز شدن فرم سوم ()this.Hide رو قرار بدیم، فرم اول(فرمی که فرم سوم را از طریق آن باز شده است) بسته میشود.
مثال Notepad که عرض کردم، مثال خوبی است. در فرم اصلی Notepad هستیم و فرم Find را باز میکنیم. بدون اینکه فرم Find را ببندیم، فرم Replace را باز میکنیم؛ در این مرحله فرم Find بسته میشود.
اگر از دستور ()this.Hide استفاده شود، فرم اصلی Notepad بسته میشود.
تو قسمت چت آنلاین پیام بدید راهنمایی کنم
سلام آقای درویشی لطفا پاسختون به سوال دوستمون رو اینجا هم بزارید تا بقیه هم استفاده کنن ممنون.
فعلا درخواست نکرده اما اگه بخایین نمونه پروژه رو میفرستم اینجا بردارید