ارتباط بین 2 فرم با یک شرط - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۳۴۷ نفر آنلاین
۱۵۵ عضو و ۱۹۲ مهمان در سایت حاضرند

ارتباط بین 2 فرم با یک شرط

0 امتیاز

با سلام.من می خواستم بین 2 فرم با یک if  رابطه ایجاد کنم.مثلا اگر یک دکمه در فرم 1 زده شد  اونوقت فرم 2 باز شه و یک سری عملیاتو انجام بده..

ممنون می شم اگر راهنمایی کنید.... 

سوال شده اسفند 27, 1392  بوسیله ی Sher228 (امتیاز 167)   18 33 44

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام.

مفهومی اگر بخوایم موضوع رو بررسی کنیم اینه که شما می خوای یه "نشانه" یا "مقدار" به فرم مقصد بفرستی تا در فرم مقصد متوجه بشید کاربر در فرم مبدا چه دکمه ای رو کلیک کرده.

راه های متفاوتی برای این کار وجود داره، من در اینجا یه راه متداول رو ذکر میکنم :

 استفاده از یک متغیر سراسری استاتیک :

در این روش در فرم مبدا و در قسمت Partial Class یه متغیر Public و از جنس استاتیک تعریف میکنیم تا در فرم مقصد بهش دسترسی داشته باشیم. زمانیکه در فرم مبدا، بر روی دکمه دلخواه کلیک می کنیم، به این متغیر مقدار مورد نظرتون رو می دید و بعدش فرم مقصد رو نمایش می دید. در رویداد Load فرم مقصد (یا در سازنده) مقدار این متغیر استاتیک رو دریافت می کنید و متناسب با مقدار دریافتی، عمل مورد نظرتون رو انجام میدید.

به این نکته دقت داشته باشید که برای دسترسی به متغیرهای استاتیک نیازی به new کردن اونها در مقصد نیست و فقط کافیه نام فرمی (یا نام کلاسی) که متغیر در اونجا تعریف شده نوشته بشه تا به اون متغیر دسترسی داشته باشید. در صورتیکه اگر استاتیک تعریف نکنید، برای دسترسی به مقدارش باید اون فرم (یا اون کلاس) رو new کنید که در اینصورت مقدار داخلش reset میشه (به مقدار لحظه ای که تعریفش کردید بر می گرده که برای یک متغیر int مقدار پیش فرض 0 هستش) و این برای کار شما مطلوب نخواهد بود.

فرم مبدا :

public static int MyFlag = 0;
private void button1_Click(object sender, EventArgs e)
        {
            MyFlag = 1;
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }
//
private void button2_Click(object sender, EventArgs e)
        {
            MyFlag = 2;
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }

فرم مقصد (در فرم لود یا سازنده) :

private void Form2_Load(object sender, EventArgs e)
        {
            if (Form1.MyFlag == 1)
            {
                // عملیات مورد نظر برای کلیک دکمه 1
            }
            else if (Form1.MyFlag == 2)
            {
                // عملیات مورد نظر برای کلیک دکمه 2
            }
        }

موفق باشید.

پاسخ داده شده اسفند 27, 1392 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انتخاب شد فروردین 3, 1393 بوسیله ی BlueBlade
...