本文所述執行個體實作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>/// <summary></code>
<code>/// 按名稱查找控件</code>
<code>/// </summary></code>
<code>/// <param name="parentControl">查找控件的父容器控件</param></code>
<code>/// <param name="findCtrlName">查找控件名稱</param></code>
<code>/// <returns>若沒有查找到傳回NULL</returns></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) && 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>/// <typeparam name="T">控件類型</typeparam></code>
<code>/// <param name="control">Control</param></code>
<code>/// <param name="result">轉換結果</param></code>
<code>/// <returns>若成功則傳回控件;若失敗則傳回NULL</returns></code>
<code>public</code> <code>static</code> <code>T Cast<T>(</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<CheckBox>(</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,如需轉載請自行聯系原作者