PDA

View Full Version : سوال: تبدیل رشته به event handler



saeedgharedaghi
یک شنبه 09 شهریور 1393, 18:18 عصر
سلام دوستان
من چه طوری میتونم تو c#
یک رشته رو با reflection تبدیل کنم به یک event



foreach (DataRow dr in DataTable1.Rows)
{

Control ctrl=this.Controls[dr[1].ToString()];

itemPanel1.AddItem(ctrl.Text).Name = ctrl.Name;
itemPanel1.RefreshItems();
itemPanel1.Refresh();


//itemPanel1.GetItem(ctrl.Name).Click += new System.EventHandler();

}





من میخوام تو کد بالا رشته رو تبدیل کنم به event
مثل btnAddUser_Click به صورت رشته بدم بعد بفهمه که این event e

ممنون میشم پاسخ بدین

parvizwpf
یک شنبه 09 شهریور 1393, 18:52 عصر
شاید این کمک کنه:
http://stackoverflow.com/questions/6312125/c-sharp-set-event-from-string

saeedgharedaghi
دوشنبه 10 شهریور 1393, 13:09 عصر
شاید این کمک کنه:
http://stackoverflow.com/questions/6312125/c-sharp-set-event-from-string


سلام دوست عزیز با کد زیر حل کردم

فقط یه نکته ای modifire رویداد ها باید public باشه


public void itemPanel1_ItemClick(object sender, EventArgs e)
{
string TheCommandString = ((ButtonItem)sender).Name + "_Click";
MethodInfo mi = this.GetType().GetMethod(TheCommandString);
object[] obj = new object[] { sender, e };
mi.Invoke(this, obj);
}

parvizwpf
دوشنبه 10 شهریور 1393, 16:42 عصر
خب قبول نمیکنه مگه؟

saeedgharedaghi
سه شنبه 11 شهریور 1393, 10:05 صبح
خب قبول نمیکنه مگه؟

زمانی که GetMethod میکنی حتما باید رویدادت public باشه تا به اون دسترسی داشته باشه
خودش یه متد داره به نام GetEvent که من هر چه قدر try کردم نتونستم باهاش کار کنم کلا null بر میگردوند
در کل مشکلمو با GetMethod حل کردم (فقط قبلش باید برم کل event handler هامو public کنم)