zoukankan      html  css  js  c++  java
  • winform 事件清除

    static void ClearEvent(DataGridView pControl, string pEventName)

    {

    if (pControl == null) return;
    var controlType = pControl.GetType();
    var eName = ("EVENT_" + controlType.Name + pEventName).ToUpper();

    if (string.IsNullOrEmpty(pEventName)) return;

    BindingFlags mPropertyFlags = BindingFlags.Instance | BindingFlags.Public
    | BindingFlags.Static | BindingFlags.NonPublic;//筛选
    BindingFlags mFieldFlags = BindingFlags.Static | BindingFlags.NonPublic;

    PropertyInfo propertyInfo = controlType.GetProperty("Events", mPropertyFlags);

    EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(pControl, null);//事件列表

    FieldInfo fieldInfo = controlType.GetField(eName, mFieldFlags);
    var fieldInfos = controlType.GetFields(mFieldFlags);
    Delegate d = eventHandlerList[fieldInfo.GetValue(pControl)];

    if (d == null) return;

    EventInfo eventInfo = controlType.GetEvent(pEventName);

    foreach (Delegate dx in d.GetInvocationList())

    eventInfo.RemoveEventHandler(pControl, dx);//移除已订阅的pEventName类型事件

    }

  • 相关阅读:
    家庭作业有益吗?
    视图、触发器、事务、存储过程、函数
    Navicat使用和pymysql
    表查询
    外键
    MySQL表操作
    进程池线程池、协程
    全局解释器锁及其他用法
    线程
    进程
  • 原文地址:https://www.cnblogs.com/jiangguang/p/13724861.html
Copyright © 2011-2022 走看看