ゆるふわエンジニアのブログ

行ったこと、調べたこと等をつらつらと書いていくかもしれません。

Form上の全コントロールを列挙する方法(.Net、WinForm)

Form上の全コントロールを列挙する方法です。
全コントロールに対し何かを設定したい場合に有効だと思います。
(共通のイベントを設定したい等。)

実装のサンプルコード(C#)は下記の通りです。

List<Control> controlList = new List<Control>();
Form f = new Form();
RecursiveControlSearch(f, controlList);

//コントロールを再帰的に検索し、resultListへ見つけたコントロールを詰める
private void RecursiveControlSearch(Control ctrl, List<Control> resultList)
{
    resultList.Add(ctrl);
    foreach(Control obj in ctrl.Controls)
    {
        RecursiveControlSearch(obj, resultList);
    }
}


LINQを使用したらもっと良い感じに書けそうな気がしたけども、
思いつかないのでこんな感じで。