none
Dizi İçindeki Buttona Event Ekleme. RRS feed

  • Soru

  • private void Form1_Load(object sender, EventArgs e)
            {
                Button[] der = new Button[5];
                for (int i = 0; i < der.Length; i++)
                {
                    der[i] = new Button();
                    der[i].Text = "Button" + (i + 1);
                    der[i].Location = new Point(0, i * 60);
                    der[i].Size = new Size(100, 50);
                    this.Controls.Add(der[i]);
                }
            }
            void der[1]_Click(object sender, EventArgs e)
            {
                MessageBox.Show("deneme");
            }

    Kodlarım bu şekilde yapmak istediğim her buton için ayrı event koyma örneğin birinci butona tıkladığımda " A " yazsın ikinciye tıkladığımda " B " gibi.


    19 Şubat 2019 Salı 12:30

Yanıtlar

  • Cevabınız için teşekkür ederim.

    Ayrıca diziye eklememin sebebi hepsine tek tek name vermemek istediğim içindi.

    Tek tek isim vermenize gerek yok:

    private void Form1_Load(object sender, EventArgs e)
    {
      for (int i = 0; i < 5; i++)
      {
        var button = new Button{
           Name=$"Button{i}", 
           Text = $"Button{i + 1}",
           Location = new Point(0, i * 60),
           Size = new Size(100, 50)
        };
        this.Controls.Add(button);
        button.Click += (sender, args) => {
          MessageBox.Show($"{(char)('A' + i)}")
        };
      }
    }


    19 Şubat 2019 Salı 15:43

Tüm Yanıtlar

  • Deleted
    19 Şubat 2019 Salı 12:40
  • private void Form1_Load(object sender, EventArgs e)
    {
      Button[] der = new Button[5];
      for (int i = 0; i < der.Length; i++)
      {
        der[i] = new Button();
        der[i].Text = "Button" + (i + 1);
        der[i].Location = new Point(0, i * 60);
        der[i].Size = new Size(100, 50);
        this.Controls.Add(der[i]);
        der[i].Click += (sender, args) => {
          MessageBox.Show($"{(char)('A' + i)}")
        };
      }
    }

    19 Şubat 2019 Salı 12:58
  • Cevabınız için teşekkür ederim.

    Ayrıca diziye eklememin sebebi hepsine tek tek name vermemek istediğim içindi.
    19 Şubat 2019 Salı 13:29
  • Cevabınız için teşekkür ederim.

    Ayrıca diziye eklememin sebebi hepsine tek tek name vermemek istediğim içindi.

    Tek tek isim vermenize gerek yok:

    private void Form1_Load(object sender, EventArgs e)
    {
      for (int i = 0; i < 5; i++)
      {
        var button = new Button{
           Name=$"Button{i}", 
           Text = $"Button{i + 1}",
           Location = new Point(0, i * 60),
           Size = new Size(100, 50)
        };
        this.Controls.Add(button);
        button.Click += (sender, args) => {
          MessageBox.Show($"{(char)('A' + i)}")
        };
      }
    }


    19 Şubat 2019 Salı 15:43
  • Cevabınız için teşekkür ederim.

    Ayrıca diziye eklememin sebebi hepsine tek tek name vermemek istediğim içindi.

    Name property'si hiç bir işinize yaramayacak. Bir buton dizisi yapmanıza da gerek yok. Zaten o buttonları bir container'in Controls kolleksiyonuna ekleyeceksiniz sonuçta. Buttonların bir class olduklarını hatırlayın...


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    20 Şubat 2019 Çarşamba 09:24
  • Name propertysini belki kullanacaktır. Bilmiyorum gercekten gerekli mi ama ornegin:

    void Main()
    {
    	Form f = new Form();
    	for (int i = 0; i < 5; i++)
    	{
    		var button = new Button
    		{
    			Name = $"Button{i}",
    			Text = $"Button{i + 1}",
    			Location = new Point(0, i * 60),
    			Size = new Size(100, 50)
    		};
    		f.Controls.Add(button);
    		button.Click += (sender, args) =>
    		{
    			MessageBox.Show($"{(char)('A' + i)}");
    
    	    };
    	}
    
    	var b = f.Controls.Find("Button3", false).FirstOrDefault();
    	if (b != null)
    	{
    		((Button)b).Text = "B3";
    	}
    	f.Show();
    }
    

    20 Şubat 2019 Çarşamba 14:20