概要
WindowsForm上の全てのコントロールを取得します。
定義メソッド
///
/// 指定のコントロール上の全てのジェネリック型 Tコントロールを取得する。
///
/// 対象となる型
/// 指定のコントロール
/// 指定のコントロール上の全てのジェネリック型 Tコントロールのインスタンス
public static List GetAllControls(Control top) where T : Control
{
List buf = new List();
foreach (Control ctrl in top.Controls)
{
if(ctrl is T) buf.Add((T)ctrl);
buf.AddRange(GetAllControls(ctrl));
}
return buf;
}
使用コード
// コントロール全てを列挙
List controls = GetAllControls(this);
System.Console.WriteLine("controls : " + controls.Count().ToString());
foreach (var ctl in controls)
{
System.Console.WriteLine("control : " + ctl.Name);
}
// ボタン、またはボタンを継承したコントロールを列挙
List<Button> buttons = GetAllControls<Button>(this);
System.Console.WriteLine("buttons : " + buttons.Count().ToString());
foreach (var ctl in buttons)
{
System.Console.WriteLine("button : " + ctl.Name);
}
参考
http://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html