2017-04-27 1 views
0

テキストファイルのアイテムを使用してリストボックスを埋めようとしていますが、たとえば、バーガーを選んだ場合など、コンボボックスを使用してリストボックスアイテムを並べ替える必要がありますコンボボックスでは、バーガーだけがリストボックスに表示されます。リストボックスにテキストファイルのアイテムをインベントリアプリケーションで埋め込む

これまでのところ、私はこのコードを持っている:

private void categoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    { 
     using (System.IO.StreamReader sr = new System.IO.StreamReader(@"inventory.txt")) 
     { 
      while (!sr.EndOfStream) 
      { 
       for (int i = 0; i < 22; i++) 
       { 
        string strListItem = sr.ReadLine(); 
        if (!String.IsNullOrEmpty(strListItem)) 
        listBox.Items.Add(strListItem); 
       } 
      } 
     } 
    } 
} 

問題は、それがリストボックスに移入されます、ですが、私は、コンボボックスの上に何かをクリックした場合、それだけでゲインにすべての項目を追加し、私は2倍になってしまいますアイテム。

+2

追加する前に、メソッドの開始時にすべての項目をクリアします。 'listBox.Items.Clear()' – Nino

+0

は、魅力のように働いてくれてありがとう –

答えて

2

コンボボックスのすべての選択変更イベントでリストボックスに項目を追加するため、選択した変更イベントごとに項目を追加する必要がない場合は、コードをコンストラクタに移動できます。実際に選択を変更するたびにアイテムを更新したい場合は、listBox.Items.Clear()Ninoとしてコメントに入力してください。次のように一言で言えば、あなたができる最善のことは、次のとおりです。

public void PopulateList() 
{ 
    listBox.Items.Clear(); 
    using (System.IO.StreamReader sr = new System.IO.StreamReader(@"inventory.txt")) 
     { 
      while (!sr.EndOfStream) 
      { 
       for (int i = 0; i < 22; i++) 
       { 
        string strListItem = sr.ReadLine(); 
        if (!String.IsNullOrEmpty(strListItem) && 
         (categoryComboBox.SelectedItem!=null &&  
         (strListItem.Contains(categoryComboBox.SelectedItem.ToString()))) 
        listBox.Items.Add(strListItem); 
       } 
      } 
     } 
} 

今、あなたはのInitializeComponent(後コンストラクタでメソッドを呼び出すことができます)。必要に応じてcategoryComboBox_SelectionChangedにあります。

comboboxのselectedItemに基づいてアイテムをフィルタリングすることについて: リストボックスに追加する前に、項目に/ startwith/endsが(必要に応じて)含まれているかどうかをチェックする必要があります。

+0

だが、彼はまた、並べ替え、すなわちアイテムのフィルタリングが必要だと言った。 。 。 –

+0

@ ZainUlAbidin:ありがとう、私はポストを更新しました –

関連する問題