2016-11-14 5 views
0

テキストボックスに入力する際に​​文字を追加/削除するインタラクティブlstBoxを作成する方法を知りたいと思います。私は193の結果を持つテキストファイルを私のlstBoxにコピーし、その上にテキストボックスを持っていました。リストボックスは、国連のすべての国のアルファベット順です。テキストボックスには、入力時にリストを絞り込む必要があります。また、テキストボックスから文字を削除すると、lstBoxも展開されます。これをどうやってやりますか?LINQによるインタラクティブlstBox

LINQはこれについて正しい方法ですか?私がこれまでに持っていたものをどこから始めるべきかわからない

Public Class nations 

Dim nations() As String = IO.File.ReadAllLines("Nations.txt") 

Private Sub nations_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    lstResults.Items.AddRange(nations) 
End Sub 

Private Sub txtNation_TextChanged(sender As Object, e As EventArgs) Handles txtNation.TextChanged 

    Dim nationQuery = From nation In nations 
         Order By nation.StartsWith("z") 
         Select nation 
    lstResults.DataSource = nationQuery.ToList 

End Sub 
End Class 
+0

オートコンプリートのような音ですが、リストボックスがどのようにそれに影響するのかわかりません。 – Plutonix

+0

https://gyazo.com/a8e2d83c49321790dfa03c954675a8c2はスクリーンショットです。オートコンプリートは異なるコンセプトのようです。私は国が私の検索に基づいて表示され、それを絞り込むだけです。 – Devin

+0

あなたは何を持っていますか? – Plutonix

答えて

0

実際にはリストをフィルタリングしておらず、注文するだけです。この

Private Sub txtNation_TextChanged(sender As Object, e As EventArgs) Handles txtNation.TextChanged 
    Dim text = txtNation.Text 
    Dim nationQuery = From nation In nations 
         Where nation.ToUpper().Contains(text.ToUpper()) 
         Order By nation.ToUpper().StartsWith(text.ToUpper()) Descending 
         Select nation 
    Me.lstResults.DataSource = nationQuery.ToList() 
End Sub 

注意してみてください:私はケースを無視するようにどこでもToUpper()を追加しました。また、実際にリストをフィルタリングするためにWhere句を追加しました。

関連する問題