在VB6中检测ComboBox的ListIndex中的更改

时间:2017-01-15 11:48:17

标签: events combobox vb6

我在VB6中的表单中有一个ComboBox(样式2 - 下拉列表)。 我想检测ListIndex何时发生变化。 根据我的经验和我发现的情况,我已经得出结论,应该使用Click事件(而不是Change事件),但我没有找到具体的例子。 我设想的是使用全局变量来存储先前状态,并与之进行比较,但我认为这不是最好的方法。

有更好的方法吗?

PS:我添加了几个Sub,如

Private Sub CBO1_Change()
    Dim CurLI As Integer
    CurLI = CBO1.ListIndex
    MsgBox ("CBO1_Change. ListIndex =" & CurLI)
End Sub

每个活动ChangeDropDownGotFocusKeyDownKeyPressKeyUpLostFocusScroll,并确切地检查它们的作用,以便与文档进行一定的比较。 他们似乎都不允许同时获得这两个值(在“输入”ComboBox之前和“退出”之后)。

1 个答案:

答案 0 :(得分:1)

如果您想要检测点击的变化,同时能够访问这两个更改的值,那么正如您所说,您需要跟踪当前的选择:

Private m_currentIndex As Integer

Private Sub Form_Load()
    m_currentIndex = -1

    ...
End Sub

Private Sub Combo1_Click()
    If (Combo1.ListIndex <> m_currentIndex) Then
        Debug.Print "change from "; m_currentIndex; " to "; Combo1.ListIndex
        m_currentIndex = Combo1.ListIndex
    End If
End Sub