我想在用户改变了Combo_Box里的内容时执行某些事件,
但在调试时发现 使用 change事件始终不能够得到响应,
而是用Click事件则在
Form_Load函数里为Combo_Box添加列表项时这个事件也会被响应。Private Sub Combo_1_Click()
debug.Print "11"
End sub如 Private Sub Form Load ()
Combo_1.AddItem "1",0 '在执行这条语句后会执行Click事件
Combo_1.AddItem "2",1 '在执行完这条语句后不执行Click事件
End sub
问题1: 为什么 AddItem后会响应Click事件呢?
2: 如何达到我要的效果,即只在用户改变了选项后才执行某个事件。先谢谢大家了!
但在调试时发现 使用 change事件始终不能够得到响应,
而是用Click事件则在
Form_Load函数里为Combo_Box添加列表项时这个事件也会被响应。Private Sub Combo_1_Click()
debug.Print "11"
End sub如 Private Sub Form Load ()
Combo_1.AddItem "1",0 '在执行这条语句后会执行Click事件
Combo_1.AddItem "2",1 '在执行完这条语句后不执行Click事件
End sub
问题1: 为什么 AddItem后会响应Click事件呢?
2: 如何达到我要的效果,即只在用户改变了选项后才执行某个事件。先谢谢大家了!
dim a as integerPrivate Sub Combo_1_Click()
if a = 2 then
debug.Print "11"
end if
End sub 如 Private Sub Form Load ()
a =1
Combo_1.AddItem "1",0 '在执行这条语句后会执行Click事件
Combo_1.AddItem "2",1 '在执行完这条语句后不执行Click事件
a =2
End sub
Combo_1.AddItem "1", 0 '在执行这条语句后会执行Click事件
Combo_1.AddItem "2", 1 '在执行完这条语句后不执行Click事件
End Sub
Private Sub Combo_1_Click()
Debug.Print "11"
End SubVB6.0测试没有异常,楼主的结果看不到.
'your code
End Sub
1、通过列表框的选择设置值时:无论前后值是否相同,都会触发Click事件;无论前后值是否相同,都不会触发Change事件。
2、通过直接输入设置值时,触发Changed事件,不触发Click事件。
3、无论如何,AddItem不触发Click事件。不知LZ是怎么测试的。但是在测试键盘、鼠村、resize等事件时,最好不要使用断点来测试事件的触发效果。我一般会使用附加输出来查看事件何时触发,像这样:
Private Sub Combo1_Change()
Me.List1.AddItem ("Changed:" & Me.Combo1.Text)
End SubPrivate Sub Combo1_Click()
Me.List1.AddItem ("Clicked when item count is " & Combo1.ListCount)
End SubPrivate Sub Form_Load()
Dim i As Integer
For i = 1 To 3
Combo1.AddItem (i)
Next
End Sub
关于LZ想要实现的目标,我看是没有直接的事件对应了。同时捕获Click和Change事件吧。呵呵
问题1:这难道是正常现象?
--------我昨天调试的时候,记得明明是第1条 Add语句后就执行了Click事件的,怪事。不过这样还是不行啊,问题2:VB就没有一种鼠标或键盘更改了选项后才触发事件的方法吗?谢谢大家,我代码比较多,所以昨天只贴了一部分自己临时写的代码到网上。
下面这个测试代码是会出问题的代码。Option ExplicitPrivate Sub Combo1_Change()
Debug.Print "2"
End Sub
Private Sub Combo1_Click()
Debug.Print "1"
End SubPrivate Sub Form_Load()
Combo1.AddItem "1", 0
Combo1.AddItem "2", 1
Combo1.AddItem "3", 2
Combo1.AddItem "4", 3
Combo1.ListIndex = 0Debug.Print "3"
End Sub
只要对列表项进行选择,使当前列表项改变,就会触发 Click 事件。如果仅仅在 Form_load 中 Combo1.ListIndex = 0:Private Sub Combo1_Click()
If Me.Visible Then Debug.Print "1"
End Sub