我需要一些帮助,我的头已经撞到墙上了。我有一个使用三态CheckedListBox
的应用程序。我将这三种状态用于特定目的:
Checked表示技术执行了一个操作未检查意味着技术人员没有执行操作Indeterminate表示技术人员没有执行该操作,因为这是不必要的。
我需要能够切换,鼠标从检查到未检查到不确定到必要时检查。如果我使用CheckBox
和ThreeState
被设置为True
,这正是将要发生的事情,但似乎在CheckedListBox
中设置不确定状态的唯一方法是通过代码。
CheckBox
。
我想让我困惑的是以前似乎没有人需要这个功能。我在谷歌上没有找到关于如何做到这一点,或者问这个问题。
我不认为在控件中有一个属性来控制这种行为,但它很容易在代码中实现:
void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
switch (e.CurrentValue)
{
case CheckState.Checked:
e.NewValue = CheckState.Unchecked;
break;
case CheckState.Indeterminate:
e.NewValue = CheckState.Checked;
break;
case CheckState.Unchecked:
e.NewValue = CheckState.Indeterminate;
break;
}
}
我将提供的建议从c#翻译为VB如下
Private Sub CheckedListBoxCriteria_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles CheckedListBoxCriteria.ItemCheck
Select Case e.CurrentValue
Case CheckState.Checked
e.NewValue = CheckState.Unchecked
Exit Select
Case CheckState.Indeterminate
e.NewValue = CheckState.Checked
Exit Select
Case CheckState.Unchecked
e.NewValue = CheckState.Indeterminate
Exit Select
End Select
End Sub
效果很好。我发誓我试过类似的东西,但我没有做对。但这是有效的。非常感谢。那么简单。总有一天我会弄明白的。自学包括想出一个主意,挖掘直到我找到一个线索。