可能重复:
C#: using the iterator variable of foreach loop in a lambda expression - why fails?
我有一个方法可以为自定义控件添加一些按钮。我希望每个按钮都有一个事件处理程序,它会弹出一个消息框来显示有关该按钮的详细信息。
我编写了下面的代码,但是我添加的所有按钮都会显示List<Pin>
中最后一个按钮的详细信息....如何为每个按钮添加click事件hadnler及其各自{{1}对象?
pin
答案 0 :(得分:1)
button.Tag = pin;
button.Click += MyHandler;
void MyHandler(object sender, EventArgs e)
{
var pin = (Pin)sender.Tag;
}
或作为一个lambda:
button.Tag = pin;
button.Click += (s, e) =>
{
var pin = (Pin)s.Tag;
};