【问题标题】:Disable checklistbox checkbox on click but not from code behind单击时禁用复选框复选框,但不是从后面的代码中禁用
【发布时间】:2012-06-22 18:20:29
【问题描述】:

我正在创建一个带有 Checkedlistbox 的 winforms 应用程序,其中包含一些名称。我需要的是通过单击禁用复选框来检查,但仍然可以从代码中检查。

我尝试将.CheckOnClick 设置为false,但第二次点击时复选框仍会选中。

我尝试了以下问题的解决方案: How to disable a checkbox in a checkedlistbox? 但这也导致无法从代码中进行检查。

禁用整个框不是一个选项,这将禁用所有事件,包括在我的应用程序中至关重要的选择和双击。

谁知道这个问题的解决方案?

【问题讨论】:

    标签: c# winforms checkedlistbox


    【解决方案1】:

    好的,您需要为您的 CheckedListBox 处理 ItemCheck 事件,如下所示:

    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        e.NewValue = e.CurrentValue;
    }
    

    如果你想在代码中改变复选框的状态,那么你将不得不暂时移除事件句柄:

    checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck;
    checkedListBox1.SetItemChecked(1, true);
    checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
    

    它并不优雅,但它是一个可能的解决方案。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2018-04-24
      • 2012-08-21
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多