定义动态创建按钮的功能

时间:2018-02-10 06:02:48

标签: c# winforms

我想在for循环中创建5个按钮,并为每个按钮动态分配不同的功能。例如,第一个按钮显示消息1,...,第五个按钮显示5。

以下是示例代码:

private void Form1_Load(object sender, EventArgs e)
{
    var left = 10;
    for(int i= 0; i< 5; i++)
    {
        var btn = new Button();
        btn.Text = i.ToString();
        btn.Width = 50;
        btn.Height = 50;
        btn.Left = left;
        btn.Height = 50;
        left += 55;

        btn.Click += (s2, e2) => btn_Click(s2, e2, i.ToString());
        this.Controls.Add(btn);

    }
}

static void btn_Click(object sender, EventArgs e, string s)
{
    MessageBox.Show(s);
}

但所有按钮都打印5.如何区分按钮功能?

1 个答案:

答案 0 :(得分:1)

var value = i.ToString();
btn.Click += (s2, e2) => btn_Click(s2, e2, value);
this.Controls.Add(btn);

详细了解clousure capture