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