我想在用户改变了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: 如何达到我要的效果,即只在用户改变了选项后才执行某个事件。先谢谢大家了!

解决方案 »

  1.   

    首先定义一个变量
    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 
      

  2.   

    Private Sub Form_Load()
    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测试没有异常,楼主的结果看不到.
      

  3.   

    你的change函数的整段代码呢?是不是你修改过combo的名称?另外你的Combo_1这个名称最好换个有意义的,这样的名称在学习一些语言的时候会给你带来麻烦.Private Sub Combo_1_Change()
        'your code
    End Sub
      

  4.   

    经测试:
    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事件吧。呵呵 
      

  5.   

    我做了个测试,发现是 Combo.ListIndex = 0  这一句才引起 click事件的,
    问题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
      

  6.   


    只要对列表项进行选择,使当前列表项改变,就会触发 Click 事件。如果仅仅在 Form_load 中 Combo1.ListIndex = 0:Private Sub Combo1_Click() 
    If Me.Visible Then Debug.Print "1" 
    End Sub