c#如何取得事件注册的方法
2008-06-05 15:15
363 查看
这个问题来自论坛,原文为如何判断事件已经被注册过?
用反射取出事件绑定的委托实例,然后用GetInvocationList就可以得到所有注册的方法了。
代码
用反射取出事件绑定的委托实例,然后用GetInvocationList就可以得到所有注册的方法了。
代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Reflection; namespace WindowsApplication19 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Load+=new EventHandler(Form1_Load1); this.Load+=new EventHandler(Form1_Load2); PropertyInfo propertyInfo = (typeof(Form)).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic); EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(this, null); FieldInfo fieldInfo = (typeof(Form)).GetField("EVENT_LOAD", BindingFlags.Static | BindingFlags.NonPublic); Delegate d = eventHandlerList[fieldInfo.GetValue(null)]; if (d != null) { foreach (Delegate de in d.GetInvocationList()) Console.WriteLine(de.Method.Name); } } private void Form1_Load1(object sender, EventArgs e) { //什么也不干 } private void Form1_Load2(object sender, EventArgs e) { //什么也不干 } } }
相关文章推荐
- c#如何取得事件注册的方法 收藏
- c#如何取得事件注册的方法
- c#如何取得事件注册的方法 或者说 如何判断事件已经被注册过? ... ..
- C# 控件如何获取事件已经注册的方法
- C#.NET 如何快速输入一个对象事件对应的方法
- C# 在类中如何注册事件与取消事件注册
- 一个事半功倍的c#方法 动态注册按钮事件
- C# 在类中如何注册事件与取消事件注册?
- 一个事半功倍的c#方法 动态注册按钮事件
- .NET/C#如何使用反射注册事件详解
- C# .net委托 事件中,事件注册方法的问题
- VB6 中如何访问C# Dll 中的方法、属性以及事件
- VB6 中如何访问C# Dll 中的方法、属性以及事件
- 【转】[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
- C# 事件及响应方法
- c#中如何取得应用程序运行路径
- c# 关于如何连接数据库的几种方法(switch语句中)
- C# 注册事件与通知