1

My program creates buttons dynamically.

private void CreateButton(string buttonName)
{

   Color[] c = { Color.Red, Color.Teal, Color.Blue, Color.WhiteSmoke };

   transbutton = new Button();
   transbutton.BackColor = c[2];
   transbutton.Text = buttonName;
   transbutton.Name = buttonName + "Button";
   transbutton.Width = 150;
   transbutton.Height = 150;
   transbutton.Font = new Font("Segoe UI", 13);
   transbutton.ForeColor = Color.White;

   transbutton.Click += new EventHandler(transbutton_Click);
}

private void transbutton_Click(object sender, EventArgs e)
{

   tbList.Text = transbutton.Text;
}

enter image description here

What I am trying to do is when the user clicks on the button(s) it adds the name of the button into the multiline TextBox such as in the picture above. I created an EventHandler but cant figure it out how to make it work with dynamic buttons.

4

2 回答 2

7

您有一个对作为sender参数单击的按钮的引用。所以...

private void transbutton_Click(object sender, EventArgs e)
    {
       tbList.Text += "\r\n" + ((Button)sender).Text;
    }
于 2013-05-02T20:31:10.713 回答
0

像这样使用按钮数组。它将创建 3 个动态按钮 bcoz h 变量的值为 3

public void button_Click(object sender, EventArgs e)
{
 if( sender == buttonArray[0] )
  {


  MessageBox.Show("hello");
   }

 }

private void button1_Click(object sender, EventArgs e)
{

    int h =3;


    Button[] buttonArray = new Button[8];

    for (int i = 0; i <= h-1; i++)
    {
       buttonArray[i] = new Button();
       buttonArray[i].Size = new Size(20, 43);
       buttonArray[i].Name= ""+i+"";
       buttonArray[i].Click += button_Click;//function
       buttonArray[i].Location = new Point(40, 20 + (i * 20));
        panel1.Controls.Add(buttonArray[i]);

    }
}
于 2013-10-22T10:52:14.560 回答