Etiketler

,


Form içindeki tüm kontrollere dinamik olarak ulaşmak


Her bir formun kontroller koleksiyonu (Collection Controls) vardır. Bu kontroller karmaşık bir ağaç yapısında bulunurlar. Bazı kontroller kendi içinde de başka kontrollerden hatta başka kontrol koleksiyonlarından oluşabilir. Bu kontrollere “panel” i örnek olarak verebiliriz.


İşin esasında Form da kendi başına bir kontroldür, öyleki her form Control sınıfından türetilir(inherit) yada genişletirilir (extends) .


Form içerisindeki tüm kontrollere ulaşmak için tekrarlanan bir yapı kurmamız gerekir. “Recursive” fonksiyonları kullanmak tüm ana ve çocuk (parent & child) kontrollere kolayca erişebilmemiz için uygundur.

foreach (Control anaKontrol in this.Controls) { }


ile Form içindeki tüm ana kontrollere ulaşırız. Çocuk kontrollere ulaşmak için:

foreach (Control cocukKontrol in anaKontrol) {}


döngüsünü kullanırız.

Şimdi herhangi bir form içindeki tüm kontrollere ulaşmayı tek bir fonksiyon ile yapalım.


private void KontrolAdiniEkranaYaz(Control anaKontrol )

{
foreach(Control cocukKontrol in anaKontrol)

{
console.writeln(kontrol.Text);
if(cocukKontrol .Controls.Count > 0)
{

KontrolAdiniEkranaYaz(cocukKontrol)
}
}
}


Formkontrollerine dinamik olarak ulaşmak en çok formdaki tüm textbox’ların içeriğini temizlemek için yada belli türden kontrollerin özelliklerini değiştirmek için kullanırız. Eğer bu kontrollerin ID lerine semantik isimlendirmeler verirsek, kod içinde satır fazlalığına yol açmadan dinamik olarak algoritma içersinde bile kullanabiliriz.