2017-01-15 30 views
-1

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

有没有更好的方法?

PS:我增加了一些Sub就像

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

为每个事件ChangeDropDownGotFocusKeyDownKeyPressKeyUpLostFocusScroll,并准确地检查他们做什么,所以与文档有一定的比较。 他们似乎都不允许获得两个值(在“输入”ComboBox之前和“退出”之后)。

+0

VB6没有“用户窗体”,所以不知道这里发生了什么。您是否使用某个应用程序托管的VBA?如果是这样你有一个不正确的标签:VBA不是VB6。 – Bob77

+0

@ Bob77 - PS:VB6没有用户窗体,但它有Form(也许你是因为这个而被低估了),这就是我在VB6中使用的。所以,VB6是正确的标签。 –

回答

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 
+0

就像我想的那样。 –