Events 在VB6中检测组合框的ListIndex中的更改
我有一个VB6格式的组合框(样式2-下拉列表)。 我想检测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
列表索引
何时更改。
根据我的经验和我在周围的发现,我已经得出结论,应该使用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是正确的标记。正如我所想。