Events 在VB6中检测组合框的ListIndex中的更改

Events 在VB6中检测组合框的ListIndex中的更改,events,combobox,vb6,Events,Combobox,Vb6,我有一个VB6格式的组合框(样式2-下拉列表)。 我想检测列表索引何时更改。 根据我的经验和我在周围的发现,我已经得出结论,应该使用Click事件(而不是Change事件),但我没有找到具体的例子。 我设想使用一个全局变量来存储先前的状态,并与之进行比较,但我认为这不是最好的方法 有更好的办法吗 PS:我添加了几个Subs,如 Private Sub CBO1_Change() Dim CurLI As Integer CurLI = CBO1.ListIndex Msg

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

有更好的办法吗

PS:我添加了几个
Sub
s,如

Private Sub CBO1_Change()
    Dim CurLI As Integer
    CurLI = CBO1.ListIndex
    MsgBox ("CBO1_Change. ListIndex =" & CurLI)
End Sub
每个事件分别对应一个
Change
下拉列表
GotFocus
KeyDown
KeyPress
keypup
LostFocus
滚动
,并精确检查它们的功能,以便与文档进行一定的比较。
它们似乎都不允许获取这两个值(在“输入”组合框之前和“退出”之后)。

如果您希望在能够访问两个更改的值的同时通过单击检测到更改,则正如您所说,您需要跟踪当前选择:

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
Private m_currentIndex为整数
专用子表单_加载()
m_currentIndex=-1
...
端接头
专用子组合1_单击()
如果(Combo1.ListIndex m_currentIndex),则
调试。打印“更改自”;m_指数;“至”;Combo1.ListIndex
m_currentIndex=Combo1.ListIndex
如果结束
端接头

VB6没有“UserForms”,因此不知道这里发生了什么。您是否使用托管在某个应用程序中的VBA?如果是这样,您有一个不正确的标记:VBA不是VB6。@Bob77-PS:VB6没有UserForm s,但它有Form s(可能是因为这个原因您被否决了),这就是我在VB6中使用的。所以,VB6是正确的标记。正如我所想。