c# - 从事件中获取事件处理程序?

标签 c# .net events delegates

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Is it possible to “steal” an event handler from one control and give it to another?



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

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

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

最佳答案

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

MulticastDelegate m = (MulticastDelegate)MyEvent;  

var list = m.GetInvocationList();  

foreach(Delegate d in list)  
{  
    // look at the delegate
}  
  • http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_events01292006081130AM/csharp_events.aspx
  • http://social.msdn.microsoft.com/Forums/eu/csharplanguage/thread/9a58321d-7fd5-45ca-bba0-44a0a336aeeb

  • 对于您想要访问在您无法修改其代码的类中定义的事件的调用列表的情况......
  • C# How to find if an event is hooked up
  • 关于c# - 从事件中获取事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801580/

    相关文章:

    javascript - 监听输入值的删除

    c# - 在 WCF 中自定义 SOAP header 命名空间前缀

    c# - WPF .NET4.0 是否有等效的 DependencyObject Collection<T>?

    c# - 我可以在 C# *using* block 中使用不同类型的对象吗?

    c# - C# 中的相对路径转换器 MAC->Windows, Windows->MAC

    c# - InMemoryDbContext 在种子之后不会持续存在, Controller 中的集合始终为空

    javascript - React 事件处理程序按钮单击在第一次单击时不起作用

    c# - 带有 WebApi 和业务层的 Autofac

    .net - 是否可以从另一个进程捕获 "file not found",然后将文件返回给该进程?

    javascript - 在 Closure 上创建多个元素的监听器