猿问

使用 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 个按钮,这两个按钮都需要做各种事情,然后取消选中所有框。


我看到另一个解决方案涉及堆栈面板或某种类型的代码,这些代码看起来更像 Javascript 或 HTML 而不是 C#,并且似乎还涉及将每个 checkBox.Checked 状态写成自己的行,这并没有为我节省任何行代码。


任何提示将不胜感激。谢谢大家:)


蓝山帝景
浏览 286回答 2
2回答

慕容森

用我的新朋友@HandbagCrab 提供的一些信息回答我自己的问题:foreach (Control cBox in tabPage1.Controls){if (cBox is CheckBox)    {        ((CheckBox)cBox).Checked = false;    }}添加tabPage1修复了我的问题。以前,我一直在使用this.Controlswhich 限制访问仅在该依赖项中的控件。我仍然可以通过将它们单独命名为 来控制基于复选框的其他内容checkBox1.Checked = false;,但这只是因为我按名称调用它们,而不是要求代码查看所有Controls.

动漫人物

您可以使用 C# 7.0+ 模式匹配:foreach(Control control in controls){    if (control is CheckBox chk) chk.Checked = false;}
随时随地看视频慕课网APP
我要回答