więc przypuszczalnie chcesz uzyskać wszelkie kontrole, w dowolnym miejscu na formie, a nie tylko do góry Kontrola poziomu. W tym celu musimy to poręczną funkcję małego pomocnika, aby uzyskać wszystkie formantów podrzędnych, na wszystkich poziomach, dla konkretnej kontroli:
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);
}
}
}
(Zapraszam do sprawiają, że metodę rozszerzenia, jeśli myślisz, że możesz go używać wystarczy)
Wtedy możemy po prostu użyć OfType
tego wyniku, aby uzyskać kontrole danego typu.
var panels = GetAllControls(this).OfType<Panel>();
mam edytowany tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –
Czy analizowałeś za pomocą pętli [foreach] (http://msdn.microsoft.com/en-us/library/ttw7t8t6 (v = vs.80) .aspx)? – Brian