6

可能重复:
是否可以从一个控件“窃取”事件处理程序并将其提供给另一个控件?

有没有办法从事件中获取事件处理程序的引用?

例如:

EventHandler evt = btn.Click; // or another way ?

(这里EventHandler是委托,Click是按钮的事件)

4

2 回答 2

2

如果您定义了事件并且访问它的代码在同一个类中(即不是派生的),那么您可以访问它并获取调用列表。

MulticastDelegate m = (MulticastDelegate)MyEvent;  

var list = m.GetInvocationList();  

foreach(Delegate d in list)  
{  
    // look at the delegate
}  

对于您想要访问在您无法修改其代码的类中定义的事件的调用列表的情况......

于 2012-10-09T13:50:59.457 回答
-2

您可以尝试使用此代码 - 只是casting

var result = (EventHandler)control.Click;
Console.WriteLine(result.Method.Name);
于 2012-10-09T13:51:08.933 回答