2009-03-17 9 views
0

Windows Formsフォームから利用可能なコントロールをC#で取得するにはどうすればよいですか?C#を使用してフォームから利用可能なコントロールを入手する#

+0

それは再帰的にすべてのフォーム上のコントロール、そして子供たちを取得しますあなたは "Available"を意味しますか? – Peter

+2

あなたの質問にフレーズを付ける方法を考えてみることをお勧めします。私たちはここでテレパシーではありません。 – Cerebrus

+1

@Cerebrus:私は質問の質が本当にひどいことに同意しますが、英語の技能が非常に悪く、このような質問を書くことが手近な辞書で30分かかった人が多くいます。悲しい、私は知っている。 –

答えて

1

フォーム上のすべてのコントロールを意味すると思います。 フォームオブジェクト内にControlsプロパティを使用するだけです。

foreach(Control c in this.Controls) 
{ 
    //TODO: 
} 
+1

これは、他のコントロールのコンテナである子コントロールに対して再帰的でなければなりません。 – ProfK

5

フォームでこの方法をお試しください。

public static List<Control> GetControls(Control form) 
{ 
    var controlList = new List<Control>(); 

    foreach (Control childControl in form.Controls) 
    { 
     // Recurse child controls. 
     controlList.AddRange(GetControls(childControl)); 
     controlList.Add(childControl); 
    } 
    return controlList; 
} 
その後

それを呼び出す:

List<Control> availControls = GetControls(this); 
20

それとも、列挙構文でProfKのソリューション:何

public static IEnumerable<Control> GetControls(Control form) { 
    foreach (Control childControl in form.Controls) { // Recurse child controls. 
     foreach (Control grandChild in GetControls(childControl)) { 
      yield return grandChild; 
     } 
     yield return childControl; 
    } 
} 
+0

+1のための 'yield' :) –

+0

menuitemsだけでなく(コントロールではなく)が含まれますが、それでも何か? –

関連する問題