我想在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.如何区分按钮功能?
答案 0 :(得分:1)
var value = i.ToString();
btn.Click += (s2, e2) => btn_Click(s2, e2, value);
this.Controls.Add(btn);
详细了解clousure capture。