我需要一些帮助,而且我正在撞墙。我有一个使用三态CheckedListBox
的应用程序。我将这三种状态用于特定目的:
Checked表示tech执行了一项操作 未选中表示技术人员未执行此操作 不确定意味着技术人员没有执行该操作,因为这是不必要的。
我需要能够切换,鼠标从Checked到Unchecked到Indeterminate to Checked。如果我使用CheckBox
并将ThreeState
设置为True
,这恰好会发生什么,但似乎是在{{1}中设置不确定状态的唯一方法通过代码。
有人可以告诉我该怎么办?令我难以置信的是,这不是你可以在CheckedListBox
中设置的财产。
我认为是什么让我觉得以前似乎没有人需要这个功能。我在谷歌上没有发现任何人如何做到这一点,或者提出问题。
答案 0 :(得分:5)
我认为控件中没有控制此行为的属性,但很容易在代码中实现:
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;
}
}
答案 1 :(得分:0)
我将提供的建议从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
像魅力一样工作。我会发誓我尝试了类似的东西,但我没有做对。但这很有效。非常感谢你。很简单。总有一天我会弄清楚这一点。自己教学包括提出一个想法并四处挖掘,直到找到线索。