Yani muhtemelen sen sadece üst düzey kontrolleri, her yerde formdaki denetimlerin tüm almak istiyorum. Bunun için biz, belirli bir kontrol için, her düzeyde, tüm alt denetimleri almak için bu kullanışlı küçük yardımcı işlevi gerekir: Bunu kullanmak istiyorum düşünüyorsanız
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);
}
}
}
(o bir uzantısı yöntemi yapmak için çekinmeyin yeterince)
Sonra da belirli bir türdeki kontrollerini almak için bu sonuca OfType
kullanabilirsiniz.
var panels = GetAllControls(this).OfType<Panel>();
Ben senin başlık düzenledim. Lütfen, "[Sorular soruların başlığında" etiketler içeriyor mu? "(Http://meta.stackexchange.com/questions/19190/)" bölümüne bakacak olursak, fikir birliği "hayır, yapmamalı" dır. –
Bir [foreach] (http://msdn.microsoft.com/en-us/library/ttw7t8t6 (v = vs.80) .aspx) döngüsünü kullanmayı mı düşündünüz? – Brian