想实现模糊查询,在combobox控件文本框里输入一个字符,自动弹出下拉列表,出现满足条件的项目。
可是,如果我在一个文本框里输入字符,单击按钮后能实现我要的效果,可是用combobox控件就不行了,为什么呢?代码如下Private Sub Combo1_Click()
Dim sql1 As String
Dim keyword As String
sql1 = "select distinct(aa) from 1 Where aa Like  '%" & Trim(Combo1.Text) & "%' "
Set rstmp1 = gcnLeaguers.Execute(sql1)
While Not rstmp1.EOF
          Combo1.AddItem rstmp1(0)
          rstmp1.MoveNext
Wend
Set rstmp1 = Nothing
SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
End Sub
Private Sub Command1_click()
Dim sql1 As String
Dim keyword As String
sql1 = "select distinct(aa) from 1 Where aa Like  '" & Trim(Text1.Text) & "%' "
Set rstmp1 = gcnLeaguers.Execute(sql1)
While Not rstmp1.EOF
          Combo1.AddItem rstmp1(0)
          rstmp1.MoveNext
Wend
Set rstmp1 = Nothing
SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
End Sub

解决方案 »

  1.   

    应该没问题阿,是不是combo要得到焦点.
    你单步执行一下看看.
      

  2.   

    Combo1.AddItem 这一步将再次触发Private Sub Combo1_Click事件
      

  3.   

    Validate事件中我试过了,不行的
    我只是想实现联想功能,现在我在combobox中输入a,下拉框会显示以a开头的数据,可是combobox的文本框里没有数据,也就是说我不能输入以aa,而且下拉框打开后,鼠标就看不见了,只能反显下拉框的某一行,单击后下拉框收起,才能出现鼠标。
    好奇怪的现象哦,我都被烦死了。
    而且,今天好倒霉的,吃烧饼,烧饼掉在地上,吃鸡蛋,鸡蛋掉地上,到银行给手机冲值,银行竟然说只充移动的,不充联通的。
      

  4.   

    不行啊!
    我现在的问题是输入a能找到以a开头的数据,可是combobox的文本框里没法输数据了,就是说我不能找到以aa开头的数据,style是0。
    今天那么倒霉,吃烧饼,掉在地上,吃鸡蛋,掉在地上,回贴子,添加不成功,重写
      

  5.   

    新建一工程, 在窗口中加控件:Text1、Text2、Combo1然后加下面代码,Combo1的list里加些东西如(ewtrew;ewre;erew),运行不就清楚了option expllicitPrivate Sub Form_Load()
        Combo1.ListIndex = 0
    End SubPrivate Sub Combo1_Click()
        Text1.Text = Combo1.TextEnd SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Text2.Text = Combo1.Text
    End Sub
      

  6.   

    to wzsswz(岌岌荆棘) 
    你的做法好像得不到我要的结果吧
      

  7.   


    你得把Combo1的style属性设置为0,窗口的keypreview 为 true 再执行下面代码,OK?Private Sub form_KeyPress(KeyAscii As Integer)
        If KeyAscii = 13 Then
            SendKeys vbTab
            KeyAscii = 0
        End If
    End Sub
    Private Sub Combo1_Click()
       exec_query
    end sub
    '--------------输入查询信息后回车Combo1将失去焦点,并激活Combo1_Validate事件
    Private Sub Combo1_Validate(Cancel As Boolean)
       exec_query
    End SubPrivate Sub exec_query()
    Dim sql1 As String
    Dim keyword As String
    sql1 = "select distinct(aa) from 1 Where aa Like  '%" & Trim(Combo1.Text) & "%' "
    Set rstmp1 = gcnLeaguers.Execute(sql1)
    While Not rstmp1.EOF
              Combo1.AddItem rstmp1(0)
              rstmp1.MoveNext
    Wend
    Set rstmp1 = Nothing
    SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
    End Sub
    '不过最好还是通过改变焦点方式实现你的功能,因为执行Combo1.AddItem rstmp1(0)
    '也会激活Combo1_Click()事件Private Sub Command1_click()'通过按钮切换焦点
    Dim sql1 As String
    Dim keyword As String
    sql1 = "select distinct(aa) from 1 Where aa Like  '%" & Trim(Combo1.Text) & "%' "
    Set rstmp1 = gcnLeaguers.Execute(sql1)
    While Not rstmp1.EOF
              Combo1.AddItem rstmp1(0)
              rstmp1.MoveNext
    Wend
    Set rstmp1 = Nothing
    SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
    End Sub