在checklistbox中设置鼠标的不确定状态



我需要一些帮助,我的头已经撞到墙上了。我有一个使用三态CheckedListBox的应用程序。我将这三种状态用于特定目的:

Checked表示技术执行了一个操作未检查意味着技术人员没有执行操作Indeterminate表示技术人员没有执行该操作,因为这是不必要的。

我需要能够切换,鼠标从检查到未检查到不确定到必要时检查。如果我使用CheckBoxThreeState被设置为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

效果很好。我发誓我试过类似的东西,但我没有做对。但这是有效的。非常感谢。那么简单。总有一天我会弄明白的。自学包括想出一个主意,挖掘直到我找到一个线索。

最新更新