这里实现除自己之外的全部不选,需要先定义一个全居变量,然后在checkbox中的click中调用下面过程
如果把checkbox直接放在一个groupbox下面,不需要用递归方法,如果有放其它的面板控件就需要递归遍历所有。
CheckBox curCK = null;
private void unCheckAll_NoMySelf(Control ctl)
{
if (ctl is CheckBox)
{
CheckBox ck = (CheckBox)ctl;
if (ck.Name !=curCK .Name )
ck.Checked = false;//反選
}
else
{
for (int i = 0; i < ctl.Controls.Count; i++)//下面遞歸
{
unCheckAll_NoMySelf(ctl.Controls[i]);
}
}
}
下面代码实现直接全选或反全选。
private void UnCheckAll(Control ctl)//對麼面板上的checkbox全部反選
{
if (ctl is CheckBox)
{
CheckBox ck = (CheckBox)ctl;
ck.Checked = false;//反選
}
else
{
for (int i = 0; i < ctl.Controls.Count; i++)//下面遞歸
{
UnCheckAll(ctl.Controls[i]);
}
}
}