本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下。具体功能代码如下:
主要功能部分代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code>/// <summary></code>
<code>/// 移除控件某个事件</code>
<code>/// </summary></code>
<code>/// <param name="control">控件</param></code>
<code>/// <param name="eventName">需要移除的控件名称eg:EventClick</param></code>
<code>public</code> <code>static</code> <code>void</code> <code>RemoveControlEvent(</code><code>this</code> <code>Control control, </code><code>string</code> <code>eventName)</code>
<code>{</code>
<code> FieldInfo _fl = </code><code>typeof</code><code>(Control).GetField(eventName, BindingFlags.Static | BindingFlags.NonPublic);</code>
<code> </code><code>if</code> <code>(_fl != </code><code>null</code><code>)</code>
<code> {</code>
<code> </code><code>object</code> <code>_obj = _fl.GetValue(control);</code>
<code> PropertyInfo _pi = control.GetType().GetProperty(</code><code>"Events"</code><code>, BindingFlags.NonPublic | BindingFlags.Instance);</code>
<code> EventHandlerList _eventlist = (EventHandlerList)_pi.GetValue(control, </code><code>null</code><code>);</code>
<code> </code><code>if</code> <code>(_obj != </code><code>null</code> <code>&& _eventlist != </code><code>null</code><code>)</code>
<code> _eventlist.RemoveHandler(_obj, _eventlist[_obj]);</code>
<code> }</code>
<code>}</code>
使用代码:
<code>private</code> <code>void</code> <code>WinRemoveControlEventTest_Load(</code><code>object</code> <code>sender, EventArgs e)</code>
<code> button1.RemoveControlEvent(</code><code>"EventClick"</code><code>);</code>
<code>private</code> <code>void</code> <code>button1_Click(</code><code>object</code> <code>sender, EventArgs e)</code>
<code> MessageBox.Show(</code><code>"button1_Click"</code><code>);</code>
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5885010.html,如需转载请自行联系原作者