自动匹配和选择组合框项






3.10/5 (7投票s)
2006年11月2日
1分钟阅读

57103

687
在输入字符串时自动从组合框中选择项
引言
这是一篇非常简单的文章。 当我在 VB 中工作时,我经常使用一个数据组合框,它可以根据你输入的字符串来匹配和选择其中的项目。 我不知道 .Net 是否有类似的功能。 我认为默认的组合框没有这个功能。 所以我编写了这个代码来实现这个过程。代码
匹配标志Dim Match as Boolean
TextChanged:首先,我们将检查由按键事件设置的匹配标志。 如果为真,我们将通过它们的长度将输入的字符串与列表中的项目进行检查。 比如,获取输入的字符串,并仅与输入字符串的长度匹配项目,例如,如果输入“Chand”,我们将将其与列表中的“ChandraSekar”作为“Chand - Chand”进行匹配。 如果字符串匹配,则将在组合框中选择它,并将选择命令发送到选定的字符串的剩余长度。 Dim i As Short
Dim Buffer As Short
If Match = True Then
For i = 0 To CmBx.Items.Count - 1
Buffer = Len(CmBx.Text)
If StrComp(UCase(CmBx.Text), UCase(VB.Left(CmBx.Items.Item(i), Buffer))) = 0 Then
CmBx.Text = CmBx.Items.Item(i)
CmBx.Focus()
System.Windows.Forms.SendKeys.Send("{left " & Len(CmBx.Text) - Buffer & "}+{End}")
Exit Sub
End If
Next i
End If
KeyPressEvent:在这里,我们检查按下的键。 如果按下的键是 DEL 或 BACKSPACE,我们将匹配标志设置为 false,如果按下 DEL 键则发送 DEL 键。 Dim KeyCode As Short = Asc(e.KeyChar)
If KeyCode = 8 Or KeyCode = 13 Then
If KeyCode = 13 Then
System.Windows.Forms.SendKeys.Send("{DEL}")
End If
Match = False
Else
Match = True
End If
摘要
这是一个简单的代码。 逻辑也不太复杂。 我编写这段代码是因为我在组合框控件中没有找到类似的功能。 如果它里面有,或者有其他组合框控件提供它,请告诉我。