有没有办法从事件中获取事件处理程序的引用?
例如:
EventHandler evt = btn.Click; // or another way ?
(这里EventHandler
是委托,Click
是按钮的事件)
有没有办法从事件中获取事件处理程序的引用?
例如:
EventHandler evt = btn.Click; // or another way ?
(这里EventHandler
是委托,Click
是按钮的事件)
如果您定义了事件并且访问它的代码在同一个类中(即不是派生的),那么您可以访问它并获取调用列表。
MulticastDelegate m = (MulticastDelegate)MyEvent;
var list = m.GetInvocationList();
foreach(Delegate d in list)
{
// look at the delegate
}
对于您想要访问在您无法修改其代码的类中定义的事件的调用列表的情况......
您可以尝试使用此代码 - 只是casting
var result = (EventHandler)control.Click;
Console.WriteLine(result.Method.Name);