使用Text和兩個List組合一個簡易的自動完成關鍵字功能
但是當Text設定了支持多行模式,在第二行輸入內容時就沒有‘顯示下拉關鍵字’
始終在第一行輸入才彈出下拉串列關鍵字,要實作目的效果是這樣的,始終以Text游標位置開始輸入內容就彈出下拉關鍵字,例如IDE自動完成補全功能
請各位指教,謝謝
Private Sub Form_Load()
List1.Visible = False
List2.Visible = False
Text1.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"
End Sub
Private Sub list1_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Call List1_KeyPress(vbKeyLButton)
End Sub
Private 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 If
End Sub
Private Sub List1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyLButton, vbKeyReturn, vbKeySpace
Text1.Text = List1.Text
List1.Clear
List1.Visible = False
End Select
End Sub
Private Sub Text1_Change()
Dim i As Byte
If 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 = False
Else
List1.Visible = False
End If
End Sub
uj5u.com熱心網友回復:
多行模式下內容中可能包含回車符,你直接使用instr當然不可能得到資料的........uj5u.com熱心網友回復:
你可以通過text1.selstart屬性往前找到vbbcrlf,從而得到當前行的內容,然后再instr就可以列出匹配的項了.........轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/65407.html
標籤:VB基礎類
下一篇:《求助》掃碼比對
