我正在使用包含一些名称的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;
它不是很优雅,但这是一个可能的解决方案.