簡體   English   中英

取消選中所有帶有C#的復選框

[英]Uncheck all checkBoxes with C#

我正在嘗試編寫一個代碼,當單擊一個按鈕時,它將取消選中表單中的所有復選框。 我知道我能做

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個按鈕,這兩個按鈕都需要執行各種操作,然后取消選中所有復選框。

我看到了另一個解決方案,其中涉及堆棧面板或某種類似於Java或HTML而不是C#的代碼,並且似乎還涉及將每個checkBox.Checked狀態作為自己的行寫出來,這不會為我節省任何行碼。

任何提示將不勝感激。 謝謝大家:)

使用新朋友@​​HandbagCrab的一些信息回答我自己的問題:

foreach (Control cBox in tabPage1.Controls)
{
if (cBox is CheckBox)
    {
        ((CheckBox)cBox).Checked = false;
    }
}

添加tabPage1解決了我的問題。 以前,我一直在使用this.Controls ,它僅在該依賴項內限制對控件的訪問。 通過像checkBox1.Checked = false;這樣單獨命名,我仍然能夠基於checkBox來控制其他內容checkBox1.Checked = false; ,但這只是因為我按名稱調用了它們,而不是要求代碼瀏覽所有Controls

您可以使用C#7.0+模式匹配:

foreach(Control control in controls)
{
    if (control is CheckBox chk) chk.Checked = false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM