这个问题来自论坛,原文为如何判断事件已经被注册过?
用反射取出事件绑定的委托实例,然后用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#移除所有事件绑定的方法,实例分析了C#事件绑定的移除方法,具有一定参考借鉴价值,需要的朋友可以参考下
C#中的事件与委托详解 C#中的事件与委托详解
C# Button是有DoubleClick事件的,只是它没有出现在事件列表中,而且.net也是把这个事件给"屏蔽" 掉了,无论你双击一个按钮怎么快,也不会触发这个事件。 为了能够触发C# Button的双击事件,我们可以重载...
详细讲述了C#中委托和事件的语法及其使用方法,用程序例子深入浅出的讲述了不同的使用方法和这些使用方法的优劣。
C++封装C#中的事件
C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用
C#事件实例,C#事件实例,C#事件实例
委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件。对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件...
C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。C#语言是微软公司针对.Net平台才推出来的一门新...那么在C#中,是怎样声明事件并为事件添加响应方法的呢?下面的文章对此为大家作了详细的讲述。
C#,事件,委托,订阅-发布
C# 中的委托和事件 将方法作为方法的参数 将方法绑定到委托 事件的由来 事件和委托的编译代码 委托、事件与Observer设计模式 Observer设计模式简介 实现范例的Observer设计模式 .Net Framework中的委托与事件
c#事件机制归纳,c#事件机制归纳,c#事件机制归纳
C#的接口事件示例程序,熟悉C#接口事件的运行
C#中的事件处理程序 C#中的事件处理程序是一个带有特定输入参数的代理,如下所示: public delegate void MyEventHandler(object sender, MyEventArgs e);
一个简单的事件注册调用管理功能,简单的实现事件注册,注销,调用。可作为一个小巧好用的事件管理系统。
C# 中的委托和事件,C# 中的委托和事件,C# 中的委托和事件
注册登录类与方法的简单调用C#,用C#编写的一些控件很实用的,用于注册,登陆,验证,加密
C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法
c#键盘事件实例 c#键盘事件 c#键盘 键盘事件实例 键盘事件 c#键盘事件实例 c#键盘事件 c#键盘 键盘事件实例 键盘事件 c#键盘事件实例 c#键盘事件 c#键盘 键盘事件实例 键盘事件