private void checkEdit3_CheckedChanged(object sender, EventArgs e)//华东地区的changed事件 { CheckEdit ce = sender as CheckEdit; PanelControl pal = ce.Parent as PanelControl; foreach (Control c in pal.Controls) { if (c is PanelControl) ChangedCheckStatus((c as PanelControl), ce.Checked); //修改后边省份的checked } } private void chkXinJiang_CheckStateChanged(object sender, EventArgs e)//后边省份的changed事件 { CheckEdit ce = sender as CheckEdit; PanelControl pal = ce.Parent as PanelControl; bool checkState = checkVal(pal); //得到是否省份全部选中 PanelControl palParent = pal.Parent as PanelControl; foreach (Control c in palParent.Controls) { if (c is CheckEdit) { (c as CheckEdit).Checked = checkState;//更改华东地区的checked } } } LS 像你说的,我把华东地区的changed事件去掉,我如果再去改变它的选择状态 ,那不也不行吗
我不知道原来的代码是什么样子,如果
“华东地区”的checkchanged事件已经有方法订阅了
"华东电力".checkchanged += 事件处理方法
你只要取消订阅就可以了
"华东电力".checkchanged -= 事件处理方法
这样checkchanged 也不会执行事件处理方法的代码了
不知道这样是楼主想要的吗?
private void checkEdit3_CheckedChanged(object sender, EventArgs e)//华东地区的changed事件
{
CheckEdit ce = sender as CheckEdit;
PanelControl pal = ce.Parent as PanelControl;
foreach (Control c in pal.Controls)
{
if (c is PanelControl)
ChangedCheckStatus((c as PanelControl), ce.Checked); //修改后边省份的checked
}
} private void chkXinJiang_CheckStateChanged(object sender, EventArgs e)//后边省份的changed事件
{
CheckEdit ce = sender as CheckEdit;
PanelControl pal = ce.Parent as PanelControl;
bool checkState = checkVal(pal); //得到是否省份全部选中 PanelControl palParent = pal.Parent as PanelControl;
foreach (Control c in palParent.Controls)
{
if (c is CheckEdit)
{
(c as CheckEdit).Checked = checkState;//更改华东地区的checked
}
}
} LS 像你说的,我把华东地区的changed事件去掉,我如果再去改变它的选择状态 ,那不也不行吗