WinForm实现移除控件某个事件的方法
程序员文章站
2024-02-19 09:15:10
本文实例讲述了winform实现移除控件某个事件的方法,供大家参考借鉴一下。具体功能代码如下:
主要功能部分代码如下:
/// ...
本文实例讲述了winform实现移除控件某个事件的方法,供大家参考借鉴一下。具体功能代码如下:
主要功能部分代码如下:
/// <summary> /// 移除控件某个事件 /// </summary> /// <param name="control">控件</param> /// <param name="eventname">需要移除的控件名称eg:eventclick</param> public static void removecontrolevent(this control control, string eventname) { 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]); } }
使用代码:
private void winremovecontroleventtest_load(object sender, eventargs e) { button1.removecontrolevent("eventclick"); } private void button1_click(object sender, eventargs e) { messagebox.show("button1_click"); }