PDA

View Full Version : آموزش: گرفتن نام کنترل از آبجکت sender



erfantarighi
چهارشنبه 05 اسفند 1394, 09:31 صبح
سلام
در این تابیک قصد دارم به شما دوستان عزیز اموش بدم که چطور میشه نام کنترل رو از متغیر sender گرفت
به عنوان مثال :

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


کنترل های این مثال از نوع Textbox میباشد.

اول یک متغییر از نوع var تعریف میکنیم و اون رو مقدار دهی میکنیم .

var control = (TextBox)sender;


حالا باید برای جلوگیری از ارورهای احتمالی یک if تعریف کنیم
و خاصیت Text اون کنترل رو رد MessageBox نمایش بدیم .


if (control != null)
{
MessageBox.Show(control.Text);
}





private void changeerrmsg(object sender, EventArgs e)
{
var control = (TextBox)sender;
if (control != null)
{
MessageBox.Show(control.Text);
}
}



موفق باشید .

nunegandom
جمعه 14 اسفند 1394, 20:00 عصر
اینم یه مدل دیگه
public string WhatsThatControl(object obj){
if (obj.GetType()==typeof(TextBox))
{
return "TextBox";
}
else if (obj.GetType() == typeof(CheckBox))
{
return "CheckBox";
}
else if (obj.GetType() == typeof(Button))
{
return "Button";
}
return "Unknown";
}
private void label1_Click(object sender, EventArgs e)
{
MessageBox.Show(WhatsThatControl(sender));

}

private void button1_Click(object sender, EventArgs e)
{

MessageBox.Show(WhatsThatControl(sender));
}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
MessageBox.Show(WhatsThatControl(sender));

}