C#'ta dinamik olarak kod ile form üzerine PictureBox, Panel vb. elemanlardan eklenme ihtiyacı duya biliriz, özellikle de bir oyun yazıyorsak programın çalışma zamanında bu tür elemanlar oluşturup yok etmemizin gerektiği durumlar ile karşılaşırız. Örneğimize geçersek.
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.

'olustur' butonuna basılınca 4'e 4'lük 16 adet button olşturup oluşacak bu butonları da yan yana ve alt alta gelecek şekilde dizelim.

















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




  • Etiketler: