4

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

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

我已经尝试了以下问题的解决方案: 如何禁用选中列表框中的复选框? 但这也导致禁用了从代码中检查的能力。

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

任何人都知道这个解决方案?

4

2 回答 2

4

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

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

于 2012-06-22T18:42:15.373 回答
0

Enabled属性设置为False

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.enabled.aspx

于 2012-06-22T18:24:33.133 回答