PDA

View Full Version : سوال: تشخیص کنترلی که تابع را فراخوانی کرده است



svhasvha
پنج شنبه 15 بهمن 1394, 13:17 عصر
با سلام
گاهی اوقات پیش میاد که یک ایونت را چند کنترل مشترکا فراخوانی کنند
مثلا یک دیتا گرید را در نظر بگیرید البته یکی نه مثلا سه تا!(پس چنتا؟)
رویداد کلیک روی هدر روزشو مینویسیم
بعد این روید داد رو به بقیه دیتا گرید ها نسبت میدیم یعنی این رویداد کلیک بر روی هدر روز رو به هر ستا دیتا گرید مجوز فرا خوانی میدیم
حالا تو خود متد چطور میشه فهمید که الان کدوم یکی از دیتا گرید ها اونو فراخوانی کرده با یک مثال سادهه توضیح میدم

private void dataGridView_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{

int k = Convert.ToInt32(dataGridView.Rows[dataGridView.CurrentRow.Index].Cells[0].Value.ToString());

}

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

Mahmoud Zaad
پنج شنبه 15 بهمن 1394, 13:54 عصر
سلام
اعصاب نداریا!
از sender استفاده کن. مثلاً اگه کد زیر رو توی رویداد بنویسی، اسم دیتاگرید مورد نظر رو نشون میده:
MessageBox.Show(((DataGridView)sender).Name);

البته این کد برای همه کنترلها قابل استفاده است مثلا برای باتن، در کد بالا به جای DataGridView باید بنویسد Button و ...