我正在嘗試編寫一個代碼,當單擊按鈕時,它將取消選中表單中的所有復選框。我知道我能做到checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;等等,但我有大約 35 個復選框,所以我希望使用更簡單的代碼。我一直在網上尋找看起來像這樣的東西;foreach (Control cBox in this.Controls){ if (cBox is CheckBox) { ((CheckBox)cBox).Checked = false; }}我希望使用類似的東西,而不是寫checkBox1.Checked = false;大約 70 次(因為我有 2 個按鈕,這兩個按鈕都需要做各種事情,然后取消選中所有框。我看到另一個解決方案涉及堆棧面板或某種類型的代碼,這些代碼看起來更像 Javascript 或 HTML 而不是 C#,并且似乎還涉及將每個 checkBox.Checked 狀態寫成自己的行,這并沒有為我節省任何行代碼。任何提示將不勝感激。謝謝大家:)
2 回答

慕容森
TA貢獻1853條經驗 獲得超18個贊
用我的新朋友@HandbagCrab 提供的一些信息回答我自己的問題:
foreach (Control cBox in tabPage1.Controls)
{
if (cBox is CheckBox)
{
((CheckBox)cBox).Checked = false;
}
}
添加tabPage1修復了我的問題。以前,我一直在使用this.Controlswhich 限制訪問僅在該依賴項中的控件。我仍然可以通過將它們單獨命名為 來控制基于復選框的其他內容checkBox1.Checked = false;,但這只是因為我按名稱調用它們,而不是要求代碼查看所有Controls.

動漫人物
TA貢獻1815條經驗 獲得超10個贊
您可以使用 C# 7.0+ 模式匹配:
foreach(Control control in controls)
{
if (control is CheckBox chk) chk.Checked = false;
}
- 2 回答
- 0 關注
- 323 瀏覽
添加回答
舉報
0/150
提交
取消