简单,用一个文本数据库记录用户曾经输入的东西,然后combox onchange事件中从库中用like查然后插入combox中。

解决方案 »

  1.   

    并非如此简单。如果我想在textbox中也使用该功能,怎么办?
    尤其是,如何把这个“自动完成”功能应用于任何输入控件?也就是说,做成dll?
    功能不难实现,但要想把那个下拉框部分置于所有窗口之上,就不是很容易。甚至,如果输入控件所在的窗口缩小的时候,这个下拉框也不能挡住(即,下拉框要超出该窗口的边界)我曾经做成过这个功能。要用一些API才可以。
      

  2.   

    同意 huanggx(大侠) 
    但是只要用窗体做成 拉框部分 就可以了,将窗体 SHOW ,OnFrm
      

  3.   

    下面的简单代码可以实现一个 IE 地址 Combo 的效果。只需配合 ImageList,就可以加图标了。通过 SendMessage 可以添加列表内容,我不啰嗦了:Option ExplicitPrivate hWndComboEx As LongPrivate Sub Form_Load()
        Dim initComCtrl As INITCOMMONCONTROLSEXst
        
        With initComCtrl
            .dwICC = ICC_USEREX_CLASSES
            .dwSize = Len(initComCtrl)
        End With
        
        hWndComboEx = CreateWindowEx(0&, _
                                                                WC_COMBOBOXEX, _
                                                                "", _
                                                                WS_CHILD Or WS_VISIBLE Or CBS_DROPDOWN, _
                                                                10, _
                                                                10, _
                                                                300, _
                                                                21, _
                                                                Me.hWnd, _
                                                                ByVal 0&, _
                                                                App.hInstance, _
                                                                ByVal 0&)    If hWndComboEx > 0 Then
            SendMessageVal hWndComboEx, _
                                            WM_SETFONT, _
                                            SendMessageVal(hWnd, WM_GETFONT, 0&, ByVal 0&), _
                                            ByVal &HFFFFFFFF
            SHAutoComplete SendMessageVal(hWndComboEx, CBEM_GETEDITCONTROL, 0&, ByVal 0&), SHACF_URLALL Or SHACF_FILESYSTEM
        End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        If hWndComboEx > 0 Then DestroyWindow hWndComboEx
    End Sub