天天看點

[轉] WinForm實作移除控件某個事件的方法

本文執行個體講述了WinForm實作移除控件某個事件的方法,供大家參考借鑒一下。具體功能代碼如下:

主要功能部分代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>/// &lt;summary&gt;</code>

<code>/// 移除控件某個事件</code>

<code>/// &lt;/summary&gt;</code>

<code>/// &lt;param name="control"&gt;控件&lt;/param&gt;</code>

<code>/// &lt;param name="eventName"&gt;需要移除的控件名稱eg:EventClick&lt;/param&gt;</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>&amp;&amp; _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,如需轉載請自行聯系原作者

繼續閱讀