110,535
社区成员
发帖
与我相关
我的任务
分享
void button1_Click(object sender, EventArgs e)
{
var del = getDelegateByControl(button1, "EventClick");
if (del != null)
{
MessageBox.Show(del.ToString());
}
}
/// <summary>
/// 得到控件的事件绑定的委托
/// </summary>
/// <param name="Control"></param>
/// <param name="EventName"></param>
/// <returns></returns>
Delegate getDelegateByControl(Control Control, string EventName)
{
var events =
typeof(Control).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(Control)
as EventHandlerList;
var key = typeof(Control).GetField(EventName, BindingFlags.Static | BindingFlags.NonPublic);
if (key == null)
{
throw new ArgumentException("提供的事件名不存在。", "EventName");
}
return events[key.GetValue(null)];
}