111,094
社区成员




class MyClass : Label
{
void foo()
{
var del = getDelegateByControl(new Control(), "EventMouseClick");
if (del != null)
{
del.DynamicInvoke(this, new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0));
}
}
/// <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,
null) as EventHandlerList;
var key = typeof(Control).GetField(EventName, BindingFlags.Static | BindingFlags.NonPublic);
if (key == null)
{
throw new ArgumentException("提供的事件名不存在。", "EventName");
}
return events[key.GetValue(null)];
}
}