呵呵,你的想法我们从前做过,给你说说我们的思路吧:我们是这样做的,首先是将Combo控件的键盘事件和点击事件中控制你需要的动作。然后编写一个过程或者函数,在里面编写放入到Combo控件中的值,如果你放入的值是从sqlserver中来的话你最好用ADO控件连接不要用ADO对象连接,这样出问题少些,我们当时做的是在Combo中填写一个英文或者是中文的第一个字母或者汉字,然后在Combo自动下拉与你输入相关的数据,供你选择。难到不难,只是在调试时候有些小小麻烦而已。祝你成功。

解决方案 »

  1.   

    谢谢ShimmerSama(ShimmerSama)关照,那么如何实现combo的自动下拉呢?可不要动鼠标。
      

  2.   

    那么如何实现combo的自动下拉呢?
    要用SendMessage API函数发送CB_SHOWDROPDOWN这个消息
    至于你说的那个像ie的那个功能,我有一个例程,如何给你?
    只是实现了关键部分:比如 如何使combo的下拉部分总在最上面;如何模仿自动匹配等等
      

  3.   

    你楼上说的那个方法不能完全达到你要求的那种功能(像ie地址栏的功能)
    要达到那样,只能使用api
      

  4.   

    我是这么做的:
    加一个文本框Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
    Const LB_FINDSTRING = &H18FPrivate Sub Text1_Change()
        'Retrieve the item's listindex
        'List1.listIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
        Dim Search As String, listIndex As Long
        
        Search = Text1.Text
        If Len(Search) > 0 Then
            listIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal Search)
            List1.listIndex = listIndex
        Else
            List1.listIndex = 0
        End IfEnd Sub
      

  5.   

    to huanggx(大侠):请把例程发给[email protected],谢谢!