我希望检查我的面板中是否每两个元素都选中了一个复选框,我找不到任何允许在MSDN网站上的Panel手册中使用的属性或方法。
我知道我可以检查每个元素:
foreach (CheckBox currentCheck in this.panel_Schedule.Controls)
{
if (currentCheck.Checked)
{
nbScheduleModesChecked++;
}
}
但问题在于,如果元素与面板中的复选框不同,则会发生错误,说明它无法将元素转换为复选框。
修改:
为了增加关于我的案例的精确度,我有一个面板,其中有几个CheckBox,后面跟着一个NumericUpDown。我希望能够检查是否选中了复选框:
我希望这能帮助您更好地理解我的问题。
编辑2 :
这是我希望的最佳答案的例子
for (int i;i < panel_Schedule.Controls.Count; i++)
{
if (panel_Schedule.__what i wish to know__[i].getType() == CheckBox)
{
if (panel_Schedule.__what i wish to know__[i].checked)
{
//Do something like uncheck or make NumericUpDown appear
}
}
}
答案 0 :(得分:1)
这将获取CheckBox
中的Panel
控件,并返回已检查的总数:
int totalChecked = panel_Schedule.Controls.OfType<CheckBox>().Count(x => x.Checked);
答案 1 :(得分:0)
由于上面的答案,我找到了问题的答案。 我搜索的是:
panel_Schedule.Controls.OfType<CheckBox>().ElementAt<CheckBox>(index)
在我的代码中看起来像这样:
for (int index = 0; index < panel_Schedule.Controls.Count / 2; index++)
{
CheckBox currentCheck = panel_Schedule.Controls.OfType<CheckBox>().ElementAt<CheckBox>(index);
if (currentCheck.Checked)
{
panel_Schedule.Controls.OfType<NumericUpDown>().ElementAt<NumericUpDown>(index).Visible = true;
nbScheduleModesChecked++;
}
else
{
panel_Schedule.Controls.OfType<NumericUpDown>().ElementAt<NumericUpDown>(index).Visible = false;
}
}
感谢所有帮助我的人。