FindControl
.NET Frameworkにおいて、System.Web.UI名前空間には実装されているメソッドだが、System.Windows.Forms名前空間にはどうして無いのだ? と最初は思っていたのが表題のメソッドだ。欲しかったのは基点となるコンテナコントロール(フォーム含む)から、任意の名前のコントロールを検索して参照を返す機能。そこで、以下のような簡単なメソッドを書いてユーティリティとして使っていたが、
//コントロール配列は考慮しない public static Control FindControl(string controlName, Control parentControl) { if (parentControl.Controls.ContainsKey(controlName)) { return parentControl.Controls[controlName]; } else { if (parentControl.HasChildren) { Control result = null; foreach (Control child in parentControl.Controls) { result = FindControl(controlName, child); if (result != null) return result; } return result; } else { return null; } } }
ところが、System.Windows.Forms.ControlクラスのControlsプロパティには、こんなメソッドがあるではないか!! 今日まで気がつかなったよ !!
Control.ControlCollection.Find メソッド
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
全然知らなかった。なにも知らないで上のメソッドをずっと使っていたが、これは恥ずかしいかもしれない。