2017-04-27 9 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

추가하기 전에 방법 시작시 모든 항목을 지우십시오. '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 : 감사합니다. 게시물을 업데이트했습니다. –