2016-03-08 76 views
-1

有沒有辦法讀取列表框項目中的字符串,提示用戶輸入字符串,如果用戶正確輸入它,選擇下一個項目,直到沒有剩下要選擇的項目?我在VB.NET中做這個。幫助將不勝感激。我怎樣才能從列表框中選擇一些東西

+0

有點...不清楚 – Ian

+0

要明確希望它,列表框中有3個項目。項目1的字符串是「字符串1」,項目2的字符串是「字符串2」,項目3的字符串是「字符串3」。如果用戶在文本框中輸入了項目1的正確字符串(「字符串1」),程序將提示你輸入項目2的字符串(「字符串2」)@Ian –

+0

@Ian你在嗎? –

回答

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

然後你檢查是否輸入字符串是其中在您的列表框中的文本:

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

相關問題