سلام.
مفهومی اگر بخوایم موضوع رو بررسی کنیم اینه که شما می خوای یه "نشانه" یا "مقدار" به فرم مقصد بفرستی تا در فرم مقصد متوجه بشید کاربر در فرم مبدا چه دکمه ای رو کلیک کرده.
راه های متفاوتی برای این کار وجود داره، من در اینجا یه راه متداول رو ذکر میکنم :
استفاده از یک متغیر سراسری استاتیک :
در این روش در فرم مبدا و در قسمت 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
}
}
موفق باشید.