如何从列表框中选择内容

时间:2016-03-08 02:37:11

标签: vb.net

有没有办法读取列表框项目中的字符串,提示用户输入字符串,如果用户正确输入该字符串,请选择下一个项目,直到没有项目可供选择?我在VB.NET中制作它。非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Dim items = ListBox1.Items.Cast(Of Object)().Select(Function(x) x >= x.ToString).ToList()
If items.Contains(TextBox1.Text) Then
    Dim nextIndex = items.IndexOf(TextBox1.Text) + 1
    If nextIndex < items.Count Then 'There is next item
        Dim nextItem = items(nextIndex).ToString()
        'Do something with your nextItem
    End If
End If

基本上,您尝试通过以下方式获取ListBox中的所有文字:

Dim items = ListBox1.Items.Cast(Of Object)().Select(Function(x) x >= x.ToString).ToList()

然后检查输入字符串是否属于ListBox中的文本:

If items.Contains(TextBox1.Text) Then
    .
    .
    .
End If

如果是,则获得下一个项目的索引:

Dim nextIndex = items.IndexOf(TextBox1.Text) + 1

如果下一个项目的索引未超过ListBox个元素的数量,您将获得下一个索引中的项目:

If nextIndex < items.Count Then 'There is next item
    Dim nextItem = items(nextIndex).ToString()
    'Do something with your nextItem
End If

你的下一个字符串位于nextItem,用它做点什么。

或者,如果没有填充整个项目但仍然得到相同的结果,您可以添加额外的Where LINQ子句(由Codexer建议):

Dim item = ListBox1.Items.Cast(Of Object)().Select(Function(x) x >= x.ToString).Where(Function(y) y = TextBox1.Text).FirstOrDefault()
If Not item Is Nothing Then
    Dim nextIndex = ListBox1.Items.IndexOf(item) + 1
    If nextIndex < ListBox1.Items.Count Then 'There is next item
        Dim nextItem = ListBox1.Items(nextIndex)
        'Do something with your nextItem
    End If
End If