Bir form elemanını dinamik oluşturmak için for döngülerini kullanırız eğer matris şeklinde form elemanlarını dizmek istiyorsak iç içe iki for kullanmamız gerekecektir, biz de çalışma zamanında nxn boyutlarında button nesneleri oluşturup form üzerine yerleştirelim.
Bunun için 'btnolustur' name'ine sahip butonun tıklama olayına alttakileri yazalım. Botonun tıklama olayına tasarım ekranından butona çift tıklayarak geçe biliriz.
Yukarıdaki kodlar 'olustur' butonuna basılınca yapılacakları belirlemektedir. Buradaki iç içe iki for döngüsü çalıştı zaman 'btn' adında Button nesnesi oluşturuluyor ve sırası ile bu Button nesnesinin Name, Text, Size(boyutu), Loacation(konumu), Click(tıklama olayı) atanmakta ve en son olarak oluşturulacak her bir farklı button nesnesi form'un üzerine önceden eklediğimiz 'panel' adında ki Panel nesnesinin içerisine 'panel.Controls.Add(btn);' kodu ile eklenmektedir. Oluşturulan her bir buton nesnesinin boyu
'btn.Size = new Size(60,60)' ile belirlenmektedir. 'btn.Location = new Point(60 * i,60 * j);' kodu ile de buton nesnesinin konumu verilmektedir ama biz bu buton nesnesini 'panel' isimli Panel nesnesinin içerisine atacağımız için konumunu bunu düşünerek belirtiyoruz, ilk buton nesnesi (0,0), ikinci buton nesnesi (0,60), ... ,
9. buton nesnesi (120,0) vb. konumda olacaktır.
'btn.Click += yeniOlusanButtonlarinClickOlayi;' butona bu tıklama olayı atanmaktadır.
Aşağıdaki resimde bu clik olayının içerisinde yapılanlar görünmektedir.
'Button tiklananButtonNesnesi = (sender as Button)' ile hangi butona tıklandığı bilgisini 'tiklananButtonNesnesi ' isimli değişkenine alırız bu şekilde tek bir tıklama olayı ile çok sayıda birbirine benzer tıklama olayını kontrol edebiliriz.
Not: Biz çalışma zamanında oluşturduğumuz button nesnelerini, Form ekranındaki 'panel' Name'ine sahip Panel nesnesine attığımızdan bu Panel nesnesinin boyutunun, içerisinde bulunan nesnelerin hepsini gösterecek kadar olaması gerekir. Bunu otomatik olarak ayarlanması için Properties panelinden panal nesnemizin 'AutoSize' özelliğini True yapmamız gerekir.
Ya da istenirse kod ile Form'un Load olayına aşağıdaki gibi bir kod yazılarak ta bu işlem yapıla bilir.
Burada sadece örnek olması açısından butonlar kullanılmıştır buton yerine başka nesneler de kulana bilirsiniz mantığı aynıdır.
Burayı tıklayarak uygulamayı indir
0 yorum