在窗体中添加如下方法:
第一个方法是AutoCompleteKeyUp,它将组合框和KeyEventArgs对象作为参数,需要在组合框的KeyUp事件中调用此方法;它全根据用户输入的内容选择最接近的内容;
第二个方法是AutoCompleteLeave
,在激活组合框的
Leave事件时调用,此方法仅提取用户最终选择的内容,按照组合框中的每个匹配内容修改其大小写。
代码如下:
Private Sub AutoCompleteKeyUp(ByVal Combo As ComboBox, ByVal e As KeyEventArgs)
Dim strTyped As String
Dim intFoundIndex As Integer
Dim objFoundItem As Object
Dim strFoundText As String
Dim strAppendText As String
'
忽略特殊键
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Down, Keys.Delete, Keys.CapsLock
Return
End Select
'
在查询列表中找到
strTyped = Combo.Text
intFoundIndex = Combo.FindString(strTyped)
If intFoundIndex >= 0 Then
objFoundItem = Combo.Items(intFoundIndex)
strFoundText = Combo.GetItemText(objFoundItem)
strAppendText = strFoundText.Substring(strTyped.Length)
Combo.Text = strTyped & strAppendText
Combo.SelectionStart = strTyped.Length
Combo.SelectionLength = strAppendText.Length
End If
End Sub
Private Sub AutoCompleteLeave(ByVal Combo As ComboBox)
Dim intFoundIndex As Integer
intFoundIndex = Combo.FindStringExact(Combo.Text)
Combo.SelectedIndex = -1
Combo.SelectedIndex = intFoundIndex
End
Sub
Private Sub ComboBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyUp
AutoCompleteKeyUp(ComboBox1, e)
End Sub
Private Sub ComboBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Leave
AutoCompleteLeave(ComboBox1)
End Sub
|