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

本文关键字:itemcheck 事件 列表 清除 | 更新日期: 2023-09-27 18:03:17

我在form2 (clbForm2)中得到了一个复选框,我显式地将其映射到一个项目检查事件。现在我需要从form2中取消选中Form1中控件的所有选中项。在取消检查项时,它将触发项检查事件。有什么办法可以不参加这个活动吗?我在里面写的代码,我不想从form2调用时运行。

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

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

_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler);
// Do Check as you want.
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler);

我宁愿使用一个标志,而不是取消/重新绑定…

创建一个类级别变量,如…

private bool processCheckChange = true;

然后在你的事件处理程序做…

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

当你想取消选中所有项目时…

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

我想这个应该可以了