WinForm实现移除控件某个事件的方法
本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下。具体功能代码如下:
主要功能部分代码如下:
///<summary> ///移除控件某个事件 ///</summary> ///<paramname="control">控件</param> ///<paramname="eventName">需要移除的控件名称eg:EventClick</param> publicstaticvoidRemoveControlEvent(thisControlcontrol,stringeventName) { FieldInfo_fl=typeof(Control).GetField(eventName,BindingFlags.Static|BindingFlags.NonPublic); if(_fl!=null) { object_obj=_fl.GetValue(control); PropertyInfo_pi=control.GetType().GetProperty("Events",BindingFlags.NonPublic|BindingFlags.Instance); EventHandlerList_eventlist=(EventHandlerList)_pi.GetValue(control,null); if(_obj!=null&&_eventlist!=null) _eventlist.RemoveHandler(_obj,_eventlist[_obj]); } }
使用代码:
privatevoidWinRemoveControlEventTest_Load(objectsender,EventArgse) { button1.RemoveControlEvent("EventClick"); } privatevoidbutton1_Click(objectsender,EventArgse) { MessageBox.Show("button1_Click"); }