Bu makalemizde IEnumerable interface(arayüzü)’nden faydalanıp kontrolleri nasıl liste halinde dönebileceğimiz göreceğiz.
Öncelikle ControlFind adında bir class oluşturuyoruz ve bu classın tanımlamasını IEnumarable olarak tanımlıyoruz bu sınıfdan instance aldığımızda bizden parametre olarak “Control” girmemizi isteyecektir ve FindChildControlRecursive adındaki metodumuzada istediğimiz kontrolün hangi kontrolün altında aranacağınızı parametre olarak geçiyoruz döngü ile kontrol içerisindeki istediğimiz kontrolleri bir lise halinde bize dönecektir. Cümle içerisinde çok fazla kontrol kelimesini kullandığımızı farkettim 🙂
Şimdi ControlFind adlı sınıfımıza bir gözatalım
Şimdi ise asp.net’sayfamızdan ControlFind sınıfını kullanalım
Üstteki kodlarda anlaşılacağı üzere ControlFinder sınıfından bir instance almaya çalışınca bizden aramak istediğimiz kontrol nesnesinin sınıfını parametre olarak geçmemizi istiyor. aldığımız instance ile FindChildControlsRecursive metoduna erişiyoruz bu metod ilede aradığımız kontrolün hangi nesne altında aranacaksa parametre olarak o nesneyi geçiyoruz mesela ContentPlaceHolder, Panel, MultiView vb. nesneler gibi daha sonra bu kontrollere yine instance’ini aldığımız cf adından ControlFind sınıfının FoundControl propert’si ile aramamızla eşleşen sonuçlara ulaşıyoruz ardından döngüylede Arraylist’e add metoduyla ekleyip son olarak Arraylist’imizde kaç tane kontrol bulunduğuyla ilgili bir sayı yazdıırıyoruz sayfaya.