So vermutlich wollen Sie alle Steuerelemente überall auf dem Formular erhalten, nicht nur Top-Level-Kontrollen. Dafür werden wir diese handliche kleine Hilfsfunktion müssen alle untergeordneten Steuerelemente zu bekommen, auf allen Ebenen, für eine bestimmte Steuerung:
public static IEnumerable<Control> GetAllControls(Control control)
{
Stack<Control> stack = new Stack<Control>();
stack.Push(control);
while (stack.Any())
{
var next = stack.Pop();
yield return next;
foreach (Control child in next.Controls)
{
stack.Push(child);
}
}
}
(Fühlen Sie sich frei eine Erweiterungsmethode zu machen, wenn Sie denken, dass Sie es verwenden würde, genug)
Dann können wir nur OfType
auf diesem Ergebnis verwenden Sie die Steuerelemente eines bestimmten Typs zu erhalten.
var panels = GetAllControls(this).OfType<Panel>();
ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –
Haben Sie eine [foreach] (http://msdn.microsoft.com/en-us/library/ttw7t8t6 (v = vs.80) .aspx) Schleife untersucht? – Brian