天天看點

[轉] WinForm自定義函數FindControl實作按名稱查找控件

本文所述執行個體實作WinForm自定義函數FindControl實作按名稱查找控件的功能,在C#程式開發中有一定的實用價值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

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

<code>/// 按名稱查找控件</code>

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

<code>/// &lt;param name="parentControl"&gt;查找控件的父容器控件&lt;/param&gt;</code>

<code>/// &lt;param name="findCtrlName"&gt;查找控件名稱&lt;/param&gt;</code>

<code>/// &lt;returns&gt;若沒有查找到傳回NULL&lt;/returns&gt;</code>

<code>public</code> <code>static</code> <code>Control FindControl(</code><code>this</code> <code>Control parentControl, </code><code>string</code> <code>findCtrlName)</code>

<code>{</code>

<code>  </code><code>Control _findedControl = </code><code>null</code><code>;</code>

<code>  </code><code>if</code> <code>(!</code><code>string</code><code>.IsNullOrEmpty(findCtrlName) &amp;&amp; parentControl != </code><code>null</code><code>)</code>

<code>  </code><code>{</code>

<code> </code><code>foreach</code> <code>(Control ctrl </code><code>in</code> <code>parentControl.Controls)</code>

<code> </code><code>{</code>

<code>   </code><code>if</code> <code>(ctrl.Name.Equals(findCtrlName))</code>

<code>   </code><code>{</code>

<code> </code><code>_findedControl = ctrl;</code>

<code> </code><code>break</code><code>;</code>

<code>   </code><code>}</code>

<code> </code><code>}</code>

<code>  </code><code>}</code>

<code>  </code><code>return</code> <code>_findedControl;</code>

<code>}</code>

<code>/// 将Control轉換某種控件類型</code>

<code>/// &lt;typeparam name="T"&gt;控件類型&lt;/typeparam&gt;</code>

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

<code>/// &lt;param name="result"&gt;轉換結果&lt;/param&gt;</code>

<code>/// &lt;returns&gt;若成功則傳回控件;若失敗則傳回NULL&lt;/returns&gt;</code>

<code>public</code> <code>static</code> <code>T Cast&lt;T&gt;(</code><code>this</code> <code>Control control, </code><code>out</code> <code>bool</code> <code>result) </code><code>where</code> <code>T : Control</code>

<code>  result = </code><code>false</code><code>;</code>

<code>  T _castCtrl = </code><code>null</code><code>;</code>

<code>  </code><code>if</code> <code>(control != </code><code>null</code><code>)</code>

<code>  {</code>

<code>    </code><code>if</code> <code>(control </code><code>is</code> <code>T)</code>

<code>    {</code>

<code>      </code><code>try</code>

<code>      {</code>

<code>        _castCtrl = control </code><code>as</code> <code>T;</code>

<code>        result = </code><code>true</code><code>;</code>

<code>      }</code>

<code>      </code><code>catch</code> <code>(Exception ex)</code>

<code>        Debug.WriteLine(</code><code>string</code><code>.Format(</code><code>"将Control轉換某種控件類型異常,原因:{0}"</code><code>, ex.Message));</code>

<code>        result = </code><code>false</code><code>;</code>

<code>    }</code>

<code>  }</code>

<code>  </code><code>return</code> <code>_castCtrl;</code>

 測試代碼

<code>bool</code> <code>_sucess = </code><code>false</code><code>;</code>

<code>CheckBox _finded = panel1.FindControl(</code><code>"checkBox1"</code><code>).Cast&lt;CheckBox&gt;(</code><code>out</code> <code>_sucess);</code>

<code>if</code> <code>(_sucess)</code>

<code>    </code><code>MessageBox.Show(_finded.Name);</code>

<code>else</code>

<code>    </code><code>MessageBox.Show(</code><code>"Not Finded."</code><code>);</code>

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/5885026.html,如需轉載請自行聯系原作者