不需要api的简易型自动完成实例
这个例子就是有一点缺陷:下拉列表的高度不好控制。
添加2个listbox,一个textbox。其中list1放在text1下面,紧贴。
以下是代码:
Private Sub Form_Load()List1.Visible = FalseList2.Visible = FalseText1.Text = ""List2.AddItem "adljfdfjl"List2.AddItem "adljfdfj"List2.AddItem "adljf"List2.AddItem "jfdfjl"List2.AddItem "jfdf"List2.AddItem "jf"List2.AddItem "fdfjl"List2.AddItem "fd"List2.AddItem "fdfl"List2.AddItem "中过大大的"List2.AddItem "中国人"List2.AddItem "中国"End SubPrivate Sub list1_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Call List1_KeyPress(vbKeyLButton)End SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If List1.ListCount <> 0 Then If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then List1.SetFocus: SendKeys "{UP}" End IfEnd SubPrivate Sub List1_KeyPress(KeyAscii As Integer)Select Case KeyAscii Case vbKeyLButton, vbKeyReturn, vbKeySpace Text1.Text = List1.Text List1.Clear List1.Visible = FalseEnd SelectEnd SubPrivate Sub text1_Change()Dim i As ByteIf Text1.Text <> "" Then List1.Clear For i = 0 To List2.ListCount If InStr(List2.List(i), Text1.Text) = 1 Then List1.AddItem List2.List(i) Next List1.Visible = True List1.Height = 300 + List1.ListCount * List1.FontSize * 12 If List1.ListCount = 0 Then List1.Visible = FalseElse List1.Visible = FalseEnd IfEnd Sub