我正在尝试编写一个代码,当单击按钮时,它将取消选中表单中的所有复选框。我知道我可以做到
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状态作为其自己的行,这并不能节省我任何代码行。
任何提示将不胜感激。谢谢大家:)
答案 0 :(得分:3)
使用我的新朋友@HandbagCrab的一些信息回答我自己的问题:
foreach (Control cBox in tabPage1.Controls)
{
if (cBox is CheckBox)
{
((CheckBox)cBox).Checked = false;
}
}
添加tabPage1
解决了我的问题。以前,我一直在使用this.Controls
,它仅在该依赖项内限制对控件的访问。我仍然可以通过将复选框单独命名为checkBox1.Checked = false;
来控制基于复选框的其他事物,但这只是因为我按名称调用了它们,而不是要求代码浏览所有Controls
。
答案 1 :(得分:0)
您可以使用C#7.0+模式匹配:
foreach(Control control in controls)
{
if (control is CheckBox chk) chk.Checked = false;
}