如何使用新创建的EventHandler发送变量?我的代码是这样的:
for (int i = 0; i < 5; i++)
{
Button buttonX = new Button();
buttonX.Location = new Point(0, 0 + offset);
buttonX.Size = new Size(310, 48);
buttonX.Click += new EventHandler(buttonClick);
}
private void buttonClick(object sender, EventArgs e)
{
MessageBox.Show();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做
buttonX.Click += new EventHandler(buttonClick , i);
private void buttonClick(object sender, EventArgs e, int i)
{
MessageBox.Show(i.toString());
}
Run Code Online (Sandbox Code Playgroud)
关闭是盛大的.你可以使用lambda表示法:
buttonX.Click += (sender, e) => buttonClick(sender, e, i);
Run Code Online (Sandbox Code Playgroud)
或匿名代表符号:
buttonX.Click += delegate (object sender, EventArgs e) { buttonClick(sender, e, i); };
Run Code Online (Sandbox Code Playgroud)
相反,做
for (int i = 0; i < 5; i++)
{
Button buttonX = new Button();
buttonX.Location = new Point(0, 0 + offset);
buttonX.Size = new Size(310, 48);
var i_copy = i;
buttonX.Click += (sender, e) => buttonClick(sender, e, i_copy);
}
Run Code Online (Sandbox Code Playgroud)