设置一个全局变量作为标志,刷新列表后设置为真,添加或修改后复位为假:private sub combo1_keydown(......)
if ListRenewed then exit sub
'填充列表
......
end sub

解决方案 »

  1.   

    Combo的自动查询技术   
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const CB_FINDSTRING = &H14CPrivate Sub Combo1_Change()Dim iStart As IntegerDim sString As StringStatic iLeftOff As Integer
    iStart = 1iStart = Combo1.SelStart
    If iLeftOff <> 0 ThenCombo1.SelStart = iLeftOffiStart = iLeftOffEnd If
    sString = CStr(Left(Combo1.Text, iStart))Combo1.ListIndex = SendMessage(Combo1.hwnd, _B_FINDSTRING, -1, ByVal CStr(Left( _ombo1.Text, iStart)))
     If Combo1.ListIndex = -1 TheniLeftOff = Len(sString)combo1.Text = sStringEnd If
    Combo1.SelStart = iStartiLeftOff = 0End Sub    静态变量 iLeftOff 指定了字符长度。