c# - 单击时禁用 checklistbox 复选框,但不从后面的代码中禁用

标签 c# winforms checkedlistbox

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

我尝试将 .CheckOnClick 设置为 false,但在第二次单击时复选框仍会检查。

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

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

有人知道这个的解决方案吗?

最佳答案

好的,您需要做的是处理 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;

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

关于c# - 单击时禁用 checklistbox 复选框,但不从后面的代码中禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11161982/

相关文章:

c# - LDIF 解析器 (C#)

c# - 强制按值传递引用类型(或 .Clone()d on Pass)

c# - 如果可能的话,是否应该在软件组件内部避免使用线程?

C#:尝试在不同类中使用控制元素 - "object reference is required"

c# - 减少 if else 系列在 windows 窗体 checkedlistbox c#

vb.net - 如何在 VB.NET 中为 CheckedListBox 项目着色?

c# - 我想全选并复制到剪贴板

C#:调整图片框大小以适合图像

winforms - Windows 10 上的 ClickOnce 部署不会将 Assets 文件夹复制到客户端计算机

c# - 如何循环访问通过 Windows 控件访问的选中列表框?