2 Şub 2016

C#'ta Dinamik Buton Oluşturma

Genelde butonların form çalışır çalışmaz oluşmaları istenir. Bu durumlarda gerekli kod Form'un Load eventi içine yazılmalıdır. Önce Button class'ından bir nesne türetilir. Ardından bu nesnenin özelliklerine (property) gerekli değerler atanır.
Basit bir dinamik buton oluşturma örneği;
private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 1; i < 11; i++)
            {
                Button btn = new Button();
                btn.Name = i.ToString();
                btn.Text = i.ToString();
                btn.Width = 80;
                btn.Height = 50;
//this.Controls.Add(btn); //bu şekilde form'a ekleme yapılırsa tüm butonlar üst üste çıkacaktır
                flowLayoutPanel1.Controls.Add(btn); //oluşan butonlar üstüste binmez
            }
        }
Ekran Görüntüsü:
Form üzerine bir flowLayoutPanel atıp butonlar buraya eklenirse üstüste buton oluşması önlenebilir ve butonlar ayrı yerlerde oluşur. Bununla birlikte buton konumunu(location) her döngü tekrarında değiştirmek de bir diğer yöntem olacaktır.Aşağıdaki görüntü flowLayoutPanel'in boyutuna göre değişebilir.
NOT: Panel bizim içim flowLayoutPanel'in gördüğü bu işlevi görmez.
Eklenen dinamik butonun click eventini çalıştırabilmek için aşağıdaki kod yazılır; btn1.Click yazılıp çift tab yapıldığında hem aşağıdaki kod tamamlanacaktır hem de Click eventi kendiliğinden açılacaktır.
btn.Click += Btn_Click;
Click eventi içine butona basıldığında ne olmasını istediğimizi belirtmeden önce aşağıdaki gibi o nesnenin Buton olduğunu tanıtmamız gerekmektedir. Bunu da aşağıdaki gibi yapabilmekteyiz;
private void Btn_Click(object sender, EventArgs e)
        {
            //Button btn = sender as Button;
            Button btn = (Button)sender;
            btn.BackColor = Color.Red;
        }
Butona basılınca o butonun arka plan rengi kırmızı olacaktır.

3 yorum:

  1. işime yaradı :)

    YanıtlaSil
  2. Hocam peki birden fazla form kullandığımız durumlarda formlar arası geçişte bu butonların kaybolmasına nasıl engel olabiliriz?

    YanıtlaSil