如何在运行时将事件添加到按钮列表

时间:2010-08-31 09:25:48

标签: c# events button

我正在尝试在运行时创建按钮。我的问题是我应该如何在运行时模式下为每个按钮添加一个事件?

例如:

Button btn;
int i =0;
int j =0;
List<Button> listBTN = new List<Button>();

private void button1_Click(object sender, EventArgs e)
    {
        btn = new Button();
        btn.Location = new Point(60 + i, 90);
        btn.Size = new Size(50, 50);
        btn.Name = "BTN";

        listBTN.Add(btn);

        i = i + 50;

        foreach(Button b in listBTN){
        this.Controls.AddRange(new Button[] {b});
        }
    }

image

2 个答案:

答案 0 :(得分:4)

btn.Click += yourMethod;

private void yourMethod(object sender, EventArgs e)
{
    // your implementation
    Button btn = sender as Button;
    if (btn != null)
    {
        //use btn
    }
}

如果要在声明按钮使用时添加事件:

btn.Click += delegate
{
     //your implementation
};

答案 1 :(得分:1)

您可以这样做:

Button btn = new Button();
btn.Name = "BTN" + i.ToString(); //just to be sure you can distinguish between them
btn.Click += new EventHandler(btn_Click);

并为所有按钮添加默认处理程序:

    void btn_Click(object sender, RoutedEventArgs e)
    {
        Button btn = (Button)sender;
        MessageBox.Show("You have clicked button number " + btn.Name);
    }