2017-01-15 31 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

就像我想的那樣。 –