2

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

4

2 回答 2

6

取消绑定事件并重新绑定它。

_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler);
// Do Check as you want.
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler);
于 2011-07-25T11:42:40.983 回答
2

我宁愿使用标志而不是取消绑定/重新绑定......

创建一个类级别变量,例如...

private bool processCheckChange = true;

然后在你的事件处理程序中......

OnCheckedChange()
{
   if(processCheckChange)
   {
      //Handle check change
   }
}

然后,当您想取消选中所有项目时...

UncheckAllItems()
{
   processCheckChange = false;
   //Uncheck all items
   processCheckChange = true;
}

我认为这应该做的工作

于 2011-07-25T11:47:59.037 回答