我正在尝试编写一个代码,当单击按钮时,它将取消选中表单中的所有复选框。我知道我能做到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 关注
- 285 浏览
添加回答
举报
0/150
提交
取消