可能重复:
C#:使用foreach循环迭代变量在lambda表达式-为什么失败?
我有增加了一些按键自定义控制的方法。 我想每个按钮有一个事件处理程序,将弹出一个消息框,显示有关该按钮的细节。
我写了下面的代码,但一切,我将添加有关显示在最后一个按钮的详细信息按钮List<Pin>
...我如何添加单击事件hadnler与各自的每个按钮pin
对象?
public void Populate(List<Pin> pins)
{
_pins = pins;
var count = _pins.Count;
var location = new Point(5, 5);
foreach (var pin in _pins)
{
var button = new Button();
button.Text = pin.Name;
button.Name = "buttonPin_" + pin.Name;
button.Click += delegate
{
MessageBox.Show(pin.Name + Environment.NewLine + pin.Batch);
};
button.Size = new Size(30, 30);
button.Location = location;
location.X += 30;
if (location.X > Width) location = new Point(5, location.Y + 35);
Controls.Add(button);
}
}