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类型事件

    }

  • 相关阅读:
    Java日志框架
    分布式任务并发调度
    并发(三) CountDownLatch
    并发(二)CyclicBarrier
    并发(一) Semaphore
    MySql
    Hash
    由一个序列化框架的更换引发的问题
    navicat 12 激活
    Spring security
  • 原文地址:https://www.cnblogs.com/jiangguang/p/13724861.html
Copyright © 2011-2022 走看看