【问题标题】:Set Indeterminate state with mouse in CheckedListBox在 CheckedListBox 中用鼠标设置不确定状态
【发布时间】:2012-01-18 22:26:42
【问题描述】:

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

勾选表示技术人员执行了一项操作 未选中表示技术未执行操作 不确定意味着技术人员没有执行该操作,因为它是不必要的。

我需要能够根据需要使用鼠标从选中到未选中到不确定到选中进行切换。如果我使用CheckBox 并且ThreeState 设置为True,这正是会发生的情况,但似乎在CheckedListBox 中设置Indeterminate 状态的唯一方法是通过代码。

有人可以告诉我该怎么做吗?令我惊讶的是,它不是您可以像在 CheckBox 中那样设置的属性。

我认为让我感到震惊的是,以前似乎没有人需要此功能。我在 Google 上没有找到任何关于如何做到这一点或提出问题的信息。

【问题讨论】:

    标签: vb.net controls checkedlistbox tri-state-logic


    【解决方案1】:

    我不认为控件中有一个属性可以控制这种行为,但是在代码中很容易实现:

        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 问题。顺便说一句:欢迎堆栈溢出。请记住,如果某个答案可以帮助您解决问题,您应该点击该答案旁边的复选标记和向上箭头,以便该问题的未来访问者知道这对您有帮助。
    • 没问题,我翻译成VB了。谢谢你。我会向上箭头,但该网站还不喜欢我。需要更多代表:-)
    【解决方案2】:

    我将提供的建议从 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
    

    工作就像一个魅力。我会发誓我尝试过类似的事情,但我没有做对。但这有效。非常感谢你。很简单。总有一天我会解决这个问题的。自学包括提出一个想法并四处挖掘,直到找到线索。

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      相关资源
      最近更新 更多