在combobox中建议追加计数(vb.net)

时间:2016-06-01 12:05:41

标签: vb.net combobox

我正在寻找一种方法来计算我的剩余建议,并将其添加到我的组合框中。

在我的例子中,我有一个包含7个项目的列表

enter image description here

当我开始使用建议追加功能键入时,此列表会变窄。但我没有看到任何可能计算这些剩余的附加物。

enter image description here

我的主要目标是,一旦我只有1个建议追加剩余,我就会采取行动 但是我只能检查selectedindex,在这种情况下总是-1,或者我的comboboxcount仍然是7.我没有看到计算剩余建议附加的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

假设您的组合框列表项是字符串类型,那么此代码将执行此操作。首先,您应该创建一个包含组合框项目的字符串列表。然后在组合框的keyup事件上你应该创建用于过滤列表然后计数的searchtext。请参阅下面的代码(我还显示了searchtext以查看其值):

    Dim lst As New List(Of String)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each it In ComboBox1.Items
            lst.Add(it)
        Next
    End Sub

    Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp
        Dim seltext = ComboBox1.SelectedText
        Dim searchtext = ""
        If seltext <> "" Then
            searchtext = ComboBox1.Text.ToLower.Replace(seltext, "")
        Else
            searchtext = ComboBox1.Text.ToLower
        End If
        Label1.Text = lst.Where(Function(d) d.ToLower.StartsWith(searchtext)).Count & " - " & searchtext
    End Sub 

如果您的组合框列表项具有不同的对象类型,则必须使用listitem的文本字段填充列表。

答案 1 :(得分:0)

我有与Shurki相同的基本想法,除了我没有使用列表或用零长度字符串替换所选文本。

我使用ComboBox的SelectionStart属性从ComboBox的Text属性中获取子字符串。

Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    ComboBox1.Items.Add("Candy")
    ComboBox1.Items.Add("Car")
    ComboBox1.Items.Add("Crush")
    ComboBox1.Items.Add("Canned")
    ComboBox1.Items.Add("Can")
End Sub

Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp
    Dim query As IEnumerable(Of Object) =
    From item As Object In ComboBox1.Items
    Where item.ToString().ToUpper().StartsWith(ComboBox1.Text.Substring(0, ComboBox1.SelectionStart).ToUpper())
    Select item
    Debug.WriteLine("Number of items: " & query.Count())
End Sub
End Class