嗨我正在尝试为事件处理程序编写lambda。所以我可以为被调用的方法提供更多信息。
所以我在做:
button.Click+=new EventHandler ((object sender, EventArgs args) =>
{ button_click (i, sender, args); });
其中:
public void button_click (int i, object sender, EventArgs eventArgs)
好吧这样就像调用方法一样工作,但i
始终是i
的最后一个已知值,我真的想要将lambda传递给事件的那个值。你是怎么做到的?
感谢
答案 0 :(得分:5)
只需创建变量的副本:
int currentI = i;
button.Click+=new EventHandler ((object sender, EventArgs args) =>
{ button_click (currentI, sender, args); });
请注意,那里有一定数量的残余。您可以更简单地将其编写为:
int currentI = i;
button.Click += (sender, args) => button_click(currentI, sender, args);
我个人会重命名button_click
方法以符合.NET命名约定。