概要
WindowsForm上の全てのコントロールを取得します。
定義メソッド
/// <summary>
/// 指定のコントロール上の全てのジェネリック型 Tコントロールを取得する。
/// </summary>
/// <typeparam name="T">対象となる型</typeparam>
/// <param name="top">指定のコントロール</param>
/// <returns>指定のコントロール上の全てのジェネリック型 Tコントロールのインスタンス</returns>
public static List<T> GetAllControls<T>(Control top) where T : Control
{
List<T> buf = new List<T>();
foreach (Control ctrl in top.Controls)
{
if(ctrl is T) buf.Add((T)ctrl);
buf.AddRange(GetAllControls<T>(ctrl));
}
return buf;
}
使用コード
// コントロール全てを列挙
List<Control> controls = GetAllControls<Control>(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);
}