我在我的Windows Forms項目中有很多動態生成的單選按鈕。可以根據數據庫中的值檢查它們。我想清除單擊按鈕中的所有單選按鈕。我怎樣才能做到這一點?清除頁面中的所有單選按鈕
4
A
回答
7
檢查:。
private void button1_Click(object sender, EventArgs e)
{
var cntls = GetAll(this, typeof(RadioButton));
foreach (Control cntrl in cntls)
{
RadioButton _rb = (RadioButton)cntrl;
if (_rb.Checked)
{
_rb.Checked = false;
}
}
}
public IEnumerable<Control> GetAll(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrls => GetAll(ctrls, type)).Concat(controls).Where(c => c.GetType() == type);
}
5
只要_radioContainer是一個GroupBox,兩者都會在下面執行。
private void button1_Click(object sender, EventArgs e) {
// This will remove the radiobuttons completely...
_radioContainer.Controls.OfType<RadioButton>().ToList().ForEach(p => _radioContainer.Controls.Remove(p));
// Either of the below will clear the checked state
_radioContainer.Controls.OfType<RadioButton>().ToList().ForEach(p => p.Checked = false);
foreach (RadioButton radio in _radioContainer.Controls.OfType<RadioButton>().ToList()) {
if (radio.Checked == true) {
radio.Checked = false;
break;
}
}
}
+0
如果您的單選按鈕跨越多個分組框,則可以使用「OfType」擴展名先搜索分組框,然後搜索每個分組框中的單選按鈕。 – gangelo
1
我不知道這是否是這種情況,但是您可能有單選按鈕嵌套在其他控件中。如果是這種情況,您需要瀏覽所有控件的所有.Controls集合,以便找到所有控件並將其關閉。你可以使用這個輔助函數來做到這一點:
void ExecuteOnAllChildren<U>(Control c, Action<Control> T) where U : Control
{
c.Controls.OfType<U>().ToList().ForEach(a => T(a));
foreach(Control childControl in c.Controls)
ExecuteOnAllChildren<U>(childControl, T);
}
說使用它:
ExecuteOnAllChildren<RadioButton>(this, a => { a.Checked = false; });
(我假設「本」是你的表,否則將「這一」與形式,你會喜歡做的所有的內容替換用)
0
void Button1Click(object sender, EventArgs e)
{
foreach (Control ctrl in Controls)
{
if (ctrl is Panel)
{
foreach (Control rdb in ctrl.Controls)
{
if (rdb is RadioButton && ((RadioButton)rdb).Checked == true)
{
((RadioButton)rdb).Checked = false;
}
}
}
}
}
這將清除單擊按鈕上的所有選中的單選按鈕。
0
我遇到了類似的問題,其中沒有任何其他答案是有用的。
我想用2個Radiobutton初始化一個Winform對話框,它應該是未選中的。用戶必須做出明確的選擇,然後才能選擇某些內容(如在此問題中:https://ux.stackexchange.com/questions/76181/radio-buttons-with-none-selected)。
問題是:第一個RadioButton(低於TabIndex
的那個)總是被預先檢查過。手動取消選中一個,只檢查另一個(不管是在構造函數中還是在Load
事件中)。
解決方法:爲RadioButtons
設置TabStop
屬性爲false。不過,不要問我爲什麼。
相關問題
- 1. Primeng多選的清除所有按鈕
- 2. 清除mediawiki中的所有頁面
- 3. 用敲除清除單選按鈕
- 4. 如何使用Javascript中的右鍵單擊清除所有單選按鈕?
- 5. Jquery從頁面加載中獲取所選單選按鈕
- 6. document.write清除頁面的所有控件
- 7. Tkinter單選按鈕清除/重置值
- 8. 清除後保存單選按鈕
- 9. 不能清除單選按鈕
- 10. 使用按鈕清除所有輸入
- 11. 從表格中清除選中的單選按鈕值
- 12. 如何清除WatiN中的選定單選按鈕?
- 13. 在編輯頁面顯示所選單選按鈕
- 14. 清除所有輸入和點擊後選擇數據按鈕
- 15. 單選按鈕 - 組的所有除了其中一組
- 16. 保持單一的單選按鈕選中在頁面加載
- 17. 清除「已選中」單選按鈕模式
- 18. jQuery選擇所有單選按鈕組
- 19. 如何選擇按鈕後的所有單選按鈕android
- 20. Android:刪除通知只有當觸摸不清除「清除所有」按鈕
- 21. 清除單選按鈕單擊下拉選擇
- 22. 提交按鈕將清除材料UI表中的所有選中框
- 23. 清除所有表單域後刷新頁面(jQuery)
- 24. 在php頁面插入單選按鈕
- 25. UISearchBar中的清除按鈕
- 26. 當按下按鈕時,JSF頁面值被清除
- 27. 如何清除按回按鈕上的所有意圖變量?
- 28. 清除Java中的一組單選按鈕
- 29. 使用jQuery清除單選按鈕組中的錯誤
- 30. 清除EditText字段中的所有文本按鈕
我確定有一些有效的方法可以用JQuery來做到這一點。雖然不是一個專家,但一個快速的谷歌可以提供我想的一些結果。 –
@Joachim - 他正在使用WinForms。 – gangelo
循環遍歷所有控件並檢查它們的類型。然後刪除它們是否是單選按鈕。 – 2011-08-11 12:25:21