【发布时间】:2016-06-02 04:53:13
【问题描述】:
在上图中,“ug(User Group)”是选中列表框中的一行,启用属性为 false。如何在禁用状态下取消选中“ug(用户组)”。
【问题讨论】:
-
您需要务实地取消选中它吗?你的要求不够明确
-
使用 chkListBox.SetItemChecked(1, false);
标签: c# winforms checkedlistbox
在上图中,“ug(User Group)”是选中列表框中的一行,启用属性为 false。如何在禁用状态下取消选中“ug(用户组)”。
【问题讨论】:
标签: c# winforms checkedlistbox
你可以轻松使用
checkedListBox1.SetItemChecked(2, false);
或
checkedListBox1.SetItemCheckState(2, CheckState.Unhecked);
CheckedListBox 的Enabled 属性对项目或这两种方法的检查状态没有影响。
MSDN 链接:
更新: 禁用 CheckedListBox 中的单个项目而不是禁用整个控件是不可能开箱即用的。
如果要阻止用户更改某一项特殊项的勾选状态,需要订阅CheckedListBox的ItemCheck事件:
checkedListBox1.ItemCheck += (sender, e) =>
{
if (e.Index == 2)
e.NewValue = CheckState.Unchecked;
}
在项目的检查状态更改之前触发此事件。 e 是一个 ItemCheckEventArgs,其中包含项目的 Index、其当前的检查状态 (CurrentValue) 和之后的检查状态 (NewValue)。
所以设置e.NewValue = CheckState.Unchecked 可以防止用户再次检查该项目。
【讨论】:
CheckState.Unchecked 而不是Indeterminate。