我有多个从代码动态创建的复选框,所以我知道我可以使用以下方式获取复选框:
foreach (var checkBox in this.Controls.OfType<CheckBox>())
{
}
但我想知道或者我想要的结果是知道我的表单的所有复选框是否都被选中,例如如果所有复选框都被选中则返回 true 或如果缺少一个复选框则返回 false...我怎样才能实现这一点?问候
bool allChecked = ...
简单地作为
bool allChecked = this.Controls.OfType<CheckBox>().All(c => c.Checked);
我不知道什么AllControls
(在原始未经编辑的帖子中)是。因为这个属性看起来并不是一个标准的属性。此示例使用任何控件容器(如顶级 Form)中存在的标准 Controls 集合
如果您将复选框分布在不同的控件容器中,问题会更加复杂。在这种情况下,您可以使用递归函数来迭代地探索您的控件并计算其中有多少个被检查
int result = RecursiveCheck(f.Controls);
if(result > 0)
Console.WriteLine("Something is not checked");
int RecursiveCheck(Control.ControlCollection col)
{
int count = 0;
foreach(Control c in col)
{
if (c.Controls.Count > 0)
{
count += c.Controls.OfType<CheckBox>().Count(x => !x.Checked);
count += RecursiveCheck(c.Controls);
}
}
return count;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)