我在form2(clbForm2)中有一个checkedlist框,我明确地将它映射到项目检查事件。现在我需要从form2中取消选中Form1中控件的所有选中项。在取消选中项目时,它会触发项目检查事件。有没有办法跳过这个事件。我在其中编写代码,我不想在从form2调用时运行。请提出一个好方法。
答案 0 :(得分:6)
取消绑定事件并重新绑定它。
_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler);
// Do Check as you want.
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler);
答案 1 :(得分:2)
我更愿意使用旗帜而不是取消绑定/重新绑定......
创建一个类级别变量,例如......
private bool processCheckChange = true;
然后在你的事件处理程序中做...
OnCheckedChange()
{
if(processCheckChange)
{
//Handle check change
}
}
然后当您想要取消选中所有项目时......
UncheckAllItems()
{
processCheckChange = false;
//Uncheck all items
processCheckChange = true;
}
我认为这应该可以胜任