我需要有人來幫助我解決這個小問題。下面是一個代碼片段:拉姆達表達事件
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