看看这个:
http://www.csdn.net/expert/topic/519/519029.xml?temp=4.517764E-02

解决方案 »

  1.   

    你实现放置一个combox,隐藏,当调用text的click事件时将combox移动到text上,显示,在把combox的数据传给text
      

  2.   

    用一个listbox ,用ADO用模糊查询把和text中的查询显示在listbox中
    同时在listbox 中加入对click,keypress事件的相应处理,即可。
      

  3.   

    建一张表,(ID, Name, Terms)
    然后在Name 中输入将要显示的内容,Terms 中输入各种可供筛选的字符。
       ID   Name        Terms
    如  1   父亲        家庭成员称呼男性然后
      "SELECT Name FROM MyTable WHERE Terms LIKE '%" & Text1 & "%'"
    出来的记录赋给一个listbox 就可以了
      

  4.   

    和上面那位仁兄说的建立一张表,再用一个listbox控件,visible=false
    在text1的change事件里调整listbox的位置,并让listbox可见。
      

  5.   

    实例源码(VB6)
    步骤
    1:建一新工程--〉windows应用程序;
    2:在窗体上放一ComboBox和一个ListBox,不要修改任何属性
    3:在窗体代码文件里加入如下代码:
    Private Sub Combo1_Change()
        Dim s As String
        Dim i As Integer
        Dim flag As Boolean '指示是否在列表中有一您输入字母开头的项
        s = Combo1.Text
        flag = False
        For i = 0 To List1.ListCount - 1
            If InStr(List1.List(i), s) = 1 Then
                List1.ListIndex = i
                List1.Visible = True            flag = True
                Exit For
            End If
        Next
        If Not flag Then
            List1.Visible = False
        End If
    End Sub
    Private Sub Combo1_DropDown()
        List1.Visible = False
    End SubPrivate Sub Combo1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 13 Then
                If List1.Visible = True Then
                    Combo1.Text = List1.List(List1.ListIndex)
                End If
                List1.Visible = False
        End If
    End SubPrivate Sub Combo1_LostFocus()
        List1.Visible = False
    End SubPrivate Sub Form_Load()
        '组合框与列表框的列表内容一致
        With Combo1
            .AddItem "abc"
            .AddItem "abcd"
            .AddItem "abcde"
            .AddItem "abcdef"
            .AddItem "abcdefg"
        End With
        With List1
            .Visible = False    '初始不可见
            .AddItem "abc"
            .AddItem "abcd"
            .AddItem "abcde"
            .AddItem "abcdef"
            .AddItem "abcdefg"
        End With
    End SubPrivate Sub List1_Click()
        If List1.Visible = True Then
            Combo1.Text = List1.List(List1.ListIndex)
            List1.Visible = False
        End If
    End Sub'========================================
    'OK!
    '具有类似IE地址栏的动态查询效果,同时组何框也可单用
    '改进意见:考虑方向键的作用(类似IE地址栏)
      

  6.   

    添加一个ComboBox,一个Textbox控件''以下声明用于16位
    'Const WM_USER = &H400
    'Const CB_SHOWDROPDOWN = (WM_USER + 15)
    'Private Declare Function SendMessage Lib "User" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long'以下声明用于32位
    Const CB_SHOWDROPDOWN = &H14F
    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
    Dim i As Integer, j As Integer
    Dim Tmp As Integer
    Dim Arr(1 To 3, 1 To 5) As String
    Private Sub Form_Load()
        Combo1.AddItem "家庭成员"
        Combo1.AddItem "地址"
        Combo1.AddItem "邮编"
        Combo1.ItemData(0) = 1
        Combo1.ItemData(1) = 2
        Combo1.ItemData(2) = 3
        Arr(1, 1) = "父亲"
        Arr(1, 2) = "母亲"
        Arr(1, 3) = "哥哥"
        Arr(1, 4) = "姐姐"
        Arr(1, 5) = "妹妹"
        Arr(2, 1) = "大连"
        Arr(2, 2) = "山海"
        Arr(2, 3) = "山东"
        Arr(2, 4) = "北京"
        Arr(2, 5) = "合肥"
        Arr(3, 1) = "100000"
        Arr(3, 2) = "200000"
        Arr(3, 3) = "300000"
        Arr(3, 4) = "400000"
        Arr(3, 5) = "500000"
        
    End Sub'按回车选择
    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = Asc(vbCrLf) Then
        
            If Combo1.ListCount > 0 Then
                For i = 1 To Combo1.ListCount
                    If Trim(Text1.Text) = Combo1.List(i - 1) Then
                        Tmp = Combo1.ItemData(i - 1)
                        Exit For
                    End If
                Next
            End If
            Combo1.Clear
            Combo1.AddItem Arr(Tmp, 1), 0
            Combo1.AddItem Arr(Tmp, 2), 1
            Combo1.AddItem Arr(Tmp, 3), 2
            Combo1.AddItem Arr(Tmp, 4), 3
            Combo1.AddItem Arr(Tmp, 5), 4
        
        '自动下拉 Combo1
        Dim nret As Long
        nret = SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&)    End If
        
    End Sub
      

  7.   

    上面写的有Bug,以下改正如果有Bug,请提出来,谢谢!''以下声明用于16位
    'Const WM_USER = &H400
    'Const CB_SHOWDROPDOWN = (WM_USER + 15)
    'Private Declare Function SendMessage Lib "User" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long'以下声明用于32位
    Const CB_SHOWDROPDOWN = &H14F
    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
    Dim i As Integer, j As Integer
    Dim Tmp As Integer
    Dim Arr(1 To 3, 1 To 5) As String
    Private Sub Combo1_KeyPress(KeyAscii As Integer)
        If KeyAscii = Asc(vbCrLf) Then
            Text1.Text = Combo1.Text
            Text1.SetFocus
            Combo1.Clear
            Form_Load
        End If
    End SubPrivate Sub Form_Load()
        Combo1.AddItem "家庭成员"
        Combo1.AddItem "地址"
        Combo1.AddItem "邮编"
        Combo1.ItemData(0) = 1
        Combo1.ItemData(1) = 2
        Combo1.ItemData(2) = 3
        Arr(1, 1) = "父亲"
        Arr(1, 2) = "母亲"
        Arr(1, 3) = "哥哥"
        Arr(1, 4) = "姐姐"
        Arr(1, 5) = "妹妹"
        Arr(2, 1) = "大连"
        Arr(2, 2) = "山海"
        Arr(2, 3) = "山东"
        Arr(2, 4) = "北京"
        Arr(2, 5) = "合肥"
        Arr(3, 1) = "100000"
        Arr(3, 2) = "200000"
        Arr(3, 3) = "300000"
        Arr(3, 4) = "400000"
        Arr(3, 5) = "500000"
        
    '    Dim nret As Long
    '    nret = SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&)
    End Sub'按回车选择
    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = Asc(vbCrLf) Then
            If Combo1.ListCount > 0 Then
                For i = 1 To Combo1.ListCount
                    If Trim(Text1.Text) = Combo1.List(i - 1) Then
                        Tmp = Combo1.ItemData(i - 1)
                        Combo1.Clear
                        Combo1.SetFocus
                        Combo1.AddItem Arr(Tmp, 1), 0
                        Combo1.AddItem Arr(Tmp, 2), 1
                        Combo1.AddItem Arr(Tmp, 3), 2
                        Combo1.AddItem Arr(Tmp, 4), 3
                        Combo1.AddItem Arr(Tmp, 5), 4
                        
                        '自动下拉 Combo1
                        Dim nret As Long
                        nret = SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&)
                        Exit For
                    End If
                Next
                If i = Combo1.ListCount + 1 Then
                        MsgBox "没有该选项", vbInformation
                        Text1.SetFocus
                        Text1.Text = ""
                        Combo1.Clear
                        Form_Load
                End If        End If
            
        
        End If
        
    End Sub