我對C#非常陌生,而且我的Windows窗體應用程序中的事件處理程序遇到問題。我在運行時創建了多個單選按鈕(存儲在buttonz
列表中),並且都有相同的事件處理程序分配給它們。C#如何防止分配給多個控件的事件處理程序被調用兩次?
在foreach
循環:
buttonz.Add(new RadioButton());
buttonz[buttonz.Count - 1].CheckedChanged += new EventHandler(radio_checked);
下面是我的事件處理程序:
private void radio_checked(object sender, EventArgs e)
{
RadioButton btn = (RadioButton)sender;
Console.WriteLine("{0} Radio checked!", btn.Text);
}
輸出是:
Button1 Radio checked! (1st button is checked)
Button1 Radio checked! (2nd button is checked)
Button2 Radio checked!
Button2 Radio checked! (3rd button is checked)
Button3 Radio checked!
因此,事件處理程序被調用時,該按鈕也未被檢查。我怎樣才能防止這一點?我已經閱讀了幾個問題,但他們對我的水平來說很複雜,因此我無法提取我需要的信息。解釋性答案非常值得歡迎。謝謝。
'WPF'或'Winforms'? –
我正在使用Winforms應用程序。忘了補充問題。 – Varaquilex
您對每個按鈕使用相同的事件處理程序 - 當然,當單擊任何按鈕時,將執行相同的事件處理程序。使用發件人參數區分按鈕或使用不同的事件處理程序方法。 – VikciaR