C#中删除控件的事件的方法


需要事先引用

 

 

using System.ComponentModel;
using System.Reflection;       
  ///   <summary>
        
///  删除指定控件的指定事件
        
///   </summary>
        
///   <param name="control"></param>
        
///   <param name="eventname"></param>
         public  void ClearEvent(System.Windows.Forms.Control control,  string eventname)
        {
             if (control ==  nullreturn;
             if ( string.IsNullOrEmpty(eventname))  return;

            BindingFlags mPropertyFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic;
            BindingFlags mFieldFlags = BindingFlags.Static | BindingFlags.NonPublic;
            Type controlType =  typeof(System.Windows.Forms.Control);
            PropertyInfo propertyInfo = controlType.GetProperty( " Events ", mPropertyFlags);
            EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(control,  null);
            FieldInfo fieldInfo = ( typeof(System.Windows.Forms.Control)).GetField( " Event " + eventname, mFieldFlags);
            Delegate d = eventHandlerList[fieldInfo.GetValue(control)];

             if (d ==  nullreturn;
            EventInfo eventInfo = controlType.GetEvent(eventname);

             foreach (Delegate dx  in d.GetInvocationList())
                eventInfo.RemoveEventHandler(control, dx);

        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM