我目前来自函数式编程背景,如果我不了解 C# 中的闭包,请原谅我。
我有以下代码来动态生成获取匿名事件处理程序的按钮:
for (int i = 0; i < 7; i++)
{
Button newButton = new Button();
newButton.Text = "Click me!";
newButton.Click += delegate(Object sender, EventArgs e)
{
MessageBox.Show("I am button number " + i);
};
this.Controls.Add(newButton);
}
我希望文本在 for 循环的该迭代中"I am button number " + i
以 的值关闭。i
但是,当我实际运行程序时,每个 Button 都会显示I am button number 7
. 我错过了什么?我正在使用VS2005。
编辑:所以我想我的下一个问题是,我如何捕捉价值?