我试图取消选中我所有面板中的所有复选框。 这与其他问题不同,因为每个面板都有一个复选框。 我现在的代码现在取消选中表单中的所有复选框,但不取消所有面板中的复选框。
foreach (CheckBox control in this.Controls.OfType<CheckBox>())
{
control.Checked = false;
}
我有一堆面板和复选框,必须有一个简单的方法来取消选中它们。
这对我表单中的每个复选框都有效,而不仅仅是面板 我的代码:
private void button16_Click(object sender, EventArgs e)
{
clearStuff((Control.ControlCollection)this.Controls);
}
private void clearStuff(Control.ControlCollection obj)
{
foreach (Control control in obj)
{
if (control.HasChildren)
clearStuff(control.Controls);
else
if (control is CheckBox)
{
CheckBox check_box = (CheckBox)control;
check_box.Checked = false;
}
}
}
这可行,但可以重构
foreach (Panel control2 in this.Controls.OfType<Panel>())
{
foreach (CheckBox control1 in control2.Controls.OfType<CheckBox>())
{
control1.Checked = false;
}
}
答案 0 :(得分:0)
private void button16_Click(object sender, EventArgs e)
{
clearStuff((Control.ControlCollection)this.Controls);
}
public void clearStuff(Control.ControlCollection controls)
{
foreach (Control c in controls)
{
if (c is Panel)
{
clearStuff(c);
}
else if (c is Checkbox)
{
c.Checked = false;
}
}
}