分享程序员开发的那些事...
首页
NTFS
漏洞
Android
Magento
服务器
Python
powershell
技术问答
Linux
网站首页
且构网 - 分享程序员编程开发的那些事
您所在的位置:
首页
>
C#通过反射移除控件eventhandler方法参考
C#通过反射移除控件eventhandler方法参考
更新时间:2022-08-26 18:54:34
方法一:
去除事件
public static class EventExtension
{
public static void RemoveEvents(this Control target,string Event)
{
FieldInfo f1 = typeof(Control).GetField(Event,BindingFlags.Static | BindingFlags.NonPublic);
object obj = f1.GetValue(target.CastTo());
PropertyInfo pi =target.CastTo().GetType().GetProperty("Events",
BindingFlags.NonPublic | BindingFlags.Instance);
EventHandlerList list = (EventHandlerList)pi.GetValue(target.CastTo(), null);
list.RemoveHandler(obj, list[obj]);
}
}
使用方法:
Button button=new Button();
button.RemoveEvents
("EventClick");
URL:http://***.com/questions/91778/how-to-remove-all-event-handlers-from-a-control
来自博客:
http://www.cnblogs.com/z2002m/archive/2011/04/26/2029457.html
方法二
public static class RemoveCtrlEvent
{
public static void RemoveEvents(this Control target, string eventName)
{
if (target == null) return;
if (string.IsNullOrEmpty(eventName)) return;
BindingFlags bPropertyFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic;//筛选
BindingFlags fieldFlags = BindingFlags.Static | BindingFlags.NonPublic;
Type ctrlType = typeof(System.Windows.Forms.Control);
PropertyInfo pInfo = ctrlType.GetProperty("Events", bPropertyFlags);
EventHandlerList evtHLst = (EventHandlerList)pInfo.GetValue(target, null);//事件列表
FieldInfo fieldInfo = (typeof(Control).GetField("Event" + eventName, fieldFlags));
Delegate d = evtHLst[fieldInfo.GetValue(target)];
if (d == null) return;
EventInfo eventInfo = ctrlType.GetEvent(eventName);
foreach (Delegate dx in d.GetInvocationList())
{
//移除已订阅的eventName类型事件
eventInfo.RemoveEventHandler(target, dx);
}
}
}
来自博客:
http://blog.sina.com.cn/s/blog_6fd674050100oemh.html
上一篇 : :毛笔握笔姿势及写字姿势
下一篇 : TFTP原理及协议分析
相关阅读
C#通过反射移除控件eventhandler方法参考
推荐文章
IoT攻击可导致现实世界的破坏
重新定义3D闪存 看宝存如何出招!
可怕,现在连耳机都能被黑客用来窃听了
荷兰***批评欧盟5G行动计划
我国初步形成环保物联网应用体系 数字环保走向智慧环保还需几步?
网络安全工作中最可怕的14种自己人
CB Insights:2016年物联网行业投资交易量较前一年下降5%
安全领域大动作 赛门铁克拟24亿美元收购LifeLock
外媒:熊晓鸽牵头中国财团拟10亿美元收购IDG
巧测字段最大长度