清除列表框中的选中项目而不触发itemcheck事件

时间:2011-07-25 11:38:42

标签: c# .net mdi checkedlistbox

我在form2(clbForm2)中有一个checkedlist框,我明确地将它映射到项目检查事件。现在我需要从form2中取消选中Form1中控件的所有选中项。在取消选中项目时,它会触发项目检查事件。有没有办法跳过这个事件。我在其中编写代码,我不想在从form2调用时运行。请提出一个好方法。

2 个答案:

答案 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;
}

我认为这应该可以胜任