65.9K
CodeProject 正在变化。 阅读更多。
Home

自动匹配和选择组合框项

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.10/5 (7投票s)

2006年11月2日

1分钟阅读

viewsIcon

57103

downloadIcon

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

Sample Image - ASComboBox1.JPG

Sample Image - ASComboBox2.JPG

Sample Image - ASComboBox3.JPG

Sample Image - ASComboBox4.JPG

摘要

这是一个简单的代码。 逻辑也不太复杂。 我编写这段代码是因为我在组合框控件中没有找到类似的功能。 如果它里面有,或者有其他组合框控件提供它,请告诉我。

自动匹配和选择组合框项目 - CodeProject - 代码之家
© . All rights reserved.