1. 程式人生 > >WinForm窗體中多個單選按鈕單選的“最簡單”實現

WinForm窗體中多個單選按鈕單選的“最簡單”實現

有時候要用到多個單選按鈕,選中一個其餘的全部清除選中狀態,我剛想出來的方法是:

先把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;
                }
            }
        }