WinForm窗體中多個單選按鈕單選的“最簡單”實現
阿新 • • 發佈:2019-01-23
有時候要用到多個單選按鈕,選中一個其餘的全部清除選中狀態,我剛想出來的方法是:
先把N個RadioButton放進一個容器控制元件比如GroupBox或Panel等等,
這裡我放進了名為 Box 的GroupBox中,其餘同理,然後選中所有的單選控制元件,將它們的點選事件全部繫結到一個事件方法中。具體就是全部選擇後開啟屬性面板中的事件,找到Click然後在右邊雙擊或者輸入自己的命名,這裡我將事件命名為 ChangeState
上程式碼:
private void ChangeState(object sender, EventArgs e) { foreach (var btn in Box.Controls.Cast<RadioButton>().ToList<RadioButton>()) { if (btn.Name != (sender as Control).Name) { btn.Checked = false; } } }
但是有個問題就是不知道在資源的消耗上面,這種方法是不是合理,有人知道結果或者知道測試方法請告訴我。
不過,會有人用我這個方法嗎
last edited at 2016/12/02 15:20 最好使用針對IEnumerable的linq方法 OfType():private void ChangeState(object sender, EventArgs e) { foreach (var btn in Box.Controls.OfType<RadioButton>().ToList()) { if (btn.Name != (sender as Control).Name) { btn.Checked = false; } } }