在正常情况下不可能返回空值,除非你用代码去运行Combo1_Click过程,又没有选中Combo1当中的任何项才会发生你说的情况,如果是这样,你一定在选中Combo1项目时发生了问题,使控件没能正常的选中应该选的项,如果ComboBox的某项被选中,不管是在界面由用户选中还是在代码里选中,ComboBox都会自动触发Click事件,如果是选中项目时发生了问题,则有两种可能,一是没有选中ComboBox的某项而用代码运行Combo1_Click过程,二是把ComboBox的ListIndex设置为-1而控件自己去运行Click事件时也会这样

解决方案 »

  1.   


    Dim cIndex As Long
    Dim mStr As String
    Private Sub combo_Change()
    Print combo.Text
    mStr = combo.Text
    End SubPrivate Sub Command1_Click()
    Print combo.Text
    combo.Text = combo.List(cIndex + 1)
    cIndex = cIndex + 1
    End SubPrivate Sub Form_Click()
    Print combo.Text
    End SubPrivate Sub Form_Load()
    cIndex = -1
    Dim mIndex As Long
    For mIndex = 0 To 9
        combo.AddItem mIndex
    Next
    End SubLZ可以测试一下以上代码,,,用变量保存的方法可以保证应用中不会出现问题
      

  2.   

    刚才的问题解决了,可现在又出现了新的问题
    我添加了两个COMBOBOX.分别为COMBOBOX1和COMBOBOX2
    我在COMBOBOX1的CLICK事件中写入:COMBOBOX2.LISTINDEX=COMBOBOX1.LISTINDEX
    在COMBOBOX2的Click事件中写入:COMBOBOX1。LISTINDEX=COMBOBOX2。LISTINDEX
    为什么变成了死循环。就是当combobox2的内容改变时为什么会调用COMBOBOX2的CLICK事件。
    如何可以解决上面的问题呢。就是在COMBOBOX中的内容改变而不调用其中的CLICK事件。
      

  3.   

    那我想让其中的一个内容发生改变,另一个也跟着改变,而不会触发CLICK事件,应当如何实现呢??
    或者有没有其他的事件触发方式??
      

  4.   

    可以在Click事件中判断: 
    在Combo1_Click事件中写
    if combo1.listindex=combo2.listindex then exit sub
    combo2.listindex=combo1.listindex
    在Combo2_Click事件中写
    if combo1.listindex=combo2.listindex then exit sub
    combo1.listindex=combo2.listindex