我怎样才能从列表框中选择一些东西

问题描述:

有没有办法读取列表框项目中的字符串,提示用户输入字符串,如果用户正确输入它,选择下一个项目,直到没有剩下要选择的项目?我在VB.NET中做这个。帮助将不胜感激。我怎样才能从列表框中选择一些东西

+0

有点...不清楚 – Ian

+0

要明确希望它,列表框中有3个项目。项目1的字符串是“字符串1”,项目2的字符串是“字符串2”,项目3的字符串是“字符串3”。如果用户在文本框中输入了项目1的正确字符串(“字符串1”),程序将提示你输入项目2的字符串(“字符串2”)@Ian –

+0

@Ian你在吗? –

你可以做这样的事情:

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() 

然后你检查是否输入字符串是其中在您的列表框中的文本:

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

如果确实如此,您将得到nex的索引牛逼的项目:

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 
+1

良好的Linq解决方案,虽然你可以把一个地方的条件,然后你只会有你需要比较的东西。它会否定记录你不需要反正...... – Codexer

+0

为什么downvote?如果问题不好,问题应该被降低,如果答案不好,答案应该被降低。为什么在答案和问题之间混合?我的答案不起作用吗?没有足够的解释?不要付出任何努力写作?请考虑。 – Ian

+0

你还可以。它仍然是一个列表,因为只有当文本在列表中时才会看到,没有其他比较。 – Codexer