我需要有人来帮助我解决这个小问题。下面是一个代码片段:拉姆达表达事件
void shuffle()
{
for (int i = 0; i < 4; i++) {
// here should be the computations of x and y
buttons[i].Click += (s, e) => { show_coordinates(x, y); };
// shuffling going on
}
}
void show_coordinates(int x, int y)
{
MessageBox.Show(x + " " + y);
}
,你可以看到我创建具有不同X和Y一个新的事件处理程序,每个按钮每次运行循环时间。我的表单中还有另一个按钮,随机混合按钮。
所以,这里是问题:如果我按下shuffle按钮说10次,然后按任何混洗按钮,事件处理程序堆积起来,我得到10个消息框显示x和y值。
那么我怎么能每次按shuffle覆盖以前的事件处理程序与新的事件处理程序。
在此先感谢。
看起来这不会编译为'x'和'y'不会在拉姆达构造的点存在。 – asawyer
确实如此,然而编译器可能会告诉他::) 正如他写的,当他点击它时,他已经设法获得了10次结果。我们可以期望他只是省略了那个特定的代码。 – woutervs