【问题标题】:Clear checked items from a listbox without firing itemcheck event从列表框中清除选中的项目而不触发 itemcheck 事件
【发布时间】:2011-07-25 11:38:41
【问题描述】:

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

【问题讨论】:

    标签: c# .net mdi checkedlistbox


    【解决方案1】:

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

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

    【讨论】:

    • @如果您打开设计器类,您将能够找到事件绑定。只需复制该行并按照我在示例代码中所做的操作即可。
    【解决方案2】:

    我更喜欢使用标志而不是取消绑定/重新绑定...

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

    private bool processCheckChange = true;
    

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

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

    那么当你想取消选中所有项目时...

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

    我认为这应该可以完成这项工作

    【讨论】:

    • 如果要检查的项目很多,最好取消绑定而不是不必要地触发事件。
    • @CharithJ,是的,这是我没想到的好点
    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多