今天寫一個程序的時候,用到RadioButton控件,需要做取消的操作,當個的RadioButton選中狀態下是無法進行取消的。於是想着在Click事件中寫以下代碼:
private void rdbOnEncodeForAlphabetAandNum_Click(object sender, EventArgs e) { //MessageBox.Show(rdbOnEncodeForAlphabetAandNum.Checked.ToString()); if( rdbOnEncodeForAlphabetAandNum.Checked) { rdbOnEncodeForAlphabetAandNum.Checked = false; } else { rdbOnEncodeForAlphabetAandNum.Checked = true; } }
但是無論如何點擊,始終顯示無法選中單選按鈕!於是使用MessageBox.Show,查看值,發現每次只要單擊,Checked值都是被設置成了True,所以,不能通過判斷Checked來設置Chcked自己的值,在外部加入一個標志值即可,通過外部變量記錄Checked上次的值,然后不斷的切換狀態:
bool rdbcheck = false; //這里面有坑 private void rdbOnEncodeForAlphabetAandNum_Click(object sender, EventArgs e) { //MessageBox.Show(rdbOnEncodeForAlphabetAandNum.Checked.ToString()); if(rdbcheck) { rdbOnEncodeForAlphabetAandNum.Checked = false; rdbcheck = false; } else { rdbOnEncodeForAlphabetAandNum.Checked = true; rdbcheck = true; } }
效果如下圖: