从事件获取事件处理程序?

Bri*_*rij 5 .net c# events delegates

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

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

例如:

EventHandler evt = btn.Click; // or another way ?
Run Code Online (Sandbox Code Playgroud)

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

Col*_*ith 2

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

MulticastDelegate m = (MulticastDelegate)MyEvent;  

var list = m.GetInvocationList();  

foreach(Delegate d in list)  
{  
    // look at the delegate
}  
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

12340 次

最近记录:

11 年,6 月 前