一个事件,比如是button1.Click事件
一般情况下,我们会知道绑定了什么事件处理程序,比如button1_Click方法,那么我们就可以用-=运算符移除事件处理程序但如果不知道这个事件上绑定了什么方法(比如匿名方法),也不知道绑定了多少个方法,怎么清除这些方法?使得button1.Click事件不执行任何操作?
一般情况下,我们会知道绑定了什么事件处理程序,比如button1_Click方法,那么我们就可以用-=运算符移除事件处理程序但如果不知道这个事件上绑定了什么方法(比如匿名方法),也不知道绑定了多少个方法,怎么清除这些方法?使得button1.Click事件不执行任何操作?
解决方案 »
- 如何批量替换文本文件指定内容,并保持文件日期不变
- C# 可以动态改变构造函数里的参数值吗?
- vb.net中collection如何转换到C#
- 请问有谁对萨蒂扬这个公司熟悉,他的福利什么的,谢谢
- 如何给密码框付初值
- 请高手指点:ZeroAjax是什么?好用吗?大家给个建议,谢谢!
- 如何C#通过ServerManager类修改站点的匿名用户名和密码?
- ◥〓★〓◤-在线等待(QQ:9531511) 一个超难的问题,请版主予以解答或者其他有能力解决者(关于在IE中网页中嵌入.NET Windows 控件的难题)
- 如何将DATAGRID中的某列将1显示为选择一
- 如何分割和在网络上传输文件
- 如何实现datagrid的排序
- 请问一个gridview控件的问题
Type t = button1.GetType();
PropertyInfo pi = t.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
EventHandlerList ehl = (EventHandlerList)pi.GetValue(button1, null);
FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Delegate d = ehl[fieldInfo.GetValue(null)];
if (d != null)
{
foreach (Delegate temp in d.GetInvocationList())
{
ehl.RemoveHandler(fieldInfo.GetValue(null), temp);
}
}
再问下,Delegate或MultiDelegate能解决问题吗?
Delegate这个类不行啊?
跟Delegate.Target不一样啊
我调用GetType(),居然是object