Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const CB_FINDSTRING = &H14C
Const CB_ERR = (-1)Private Sub Combo1_KeyPress(KeyAscii As Integer)
  Dim Temp As Long
  Dim MyStr As String
     If Combo1.SelLength = 0 Then
        '如果选择的字符为零,将列标框中的文本与键入的字符相组合
        MyStr = Combo1.Text & Chr(KeyAscii)
     Else  '如果选择的字符数不为零
        MyStr = Left(Combo1.Text, Combo1.SelStart) & Chr(KeyAscii)
     End If
     '在列表框控件中查找与变量MyStr相匹配的字符串。
     '如果找到,则返回值为第一个匹配的字符串的索引值。如果未找到,则返回值为-1
     Temp = SendMessage(Combo1.hwnd, CB_FINDSTRING, True, ByVal MyStr)
     If Temp <> CB_ERR Then  '如果找到
         Combo1.ListIndex = Temp  '将找到的项目添加到编辑部分
         Combo1.SelStart = Len(Combo1.Text)  '将光标设置在文本尾部
     End If
   KeyAscii = 0
End SubPrivate Sub Form_Load()
'向类标框中添加项目
Combo1.AddItem "美式炸鸡": Combo1.AddItem "中国饺子": Combo1.AddItem "冰淇淋"
Combo1.AddItem "春卷": Combo1.AddItem "陕西凉皮": Combo1.AddItem "麻辣火锅"
Combo1.AddItem "四川麻辣烫": Combo1.AddItem "东北饺子王": Combo1.AddItem "香格里拉"
Combo1.AddItem "K F C": Combo1.Text = ""
End Sub目的是实现查询功能
MyStr = Combo1.Text & Chr(KeyAscii)
这句话我不明白,尤其是CHR(KEYASCII)

解决方案 »

  1.   

    也就是根据你的KeyAscii码获得你所按下的键,比如你的Keyascii是65那么Chr(65)就是a
      

  2.   

    哦,这个好象是带查询功能的COMBO吧,我还有个问题就是:比如我在COMBO1中输入"四川"两个字,然后"四川麻辣烫"就自动显示在COMBO1中,但是如果我只想删除一个"烫"字,就不行,就把全部都删除,这是怎么回事,请各位帮帮忙!!!!!!!!