禁用单击复选框,但不能从后面的代码

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

我尝试将.CheckOnClick设置为false,但是此复选框仍然选中第二次单击.

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

禁用整个框不是一个选项,这将禁用所有事件,包括对我的应用程序至关重要的select和doublemouseclick.

有谁知道解决方案吗?

解决方法:

好的,您需要做的是处理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#-仅显示类的代码视图


下一篇:CodeGo.net>如何改变形式与动画?