2010-04-01 6 views
0

내가 원하는 것은 구분 된 텍스트 파일에서 목록 상자를 만드는 것입니다.WinForms 동적 목록 상자

목록 상자는 텍스트 파일의 행을 기반으로 행 X 개를 채 웁니다. 목록 상자에는 3 개의 열이 있으며 각 열에는 특정 구분 기호가 채워집니다. 이게 C#에서 가능합니까? 모든 출발점은 좋을 것입니다!


음, 내 explaination 기술에 종사해야합니다. 내가 그것의 가능한 열 및 행 줄 목록 상자를 만들 수 있다면 궁금하네요?

+0

시작 지점 : 당신은 Windows Forms 또는 Web Forms 또는 WPF 나 실버 라이트 또는 뭔가에 대해 이야기하고 있는지 말한다. –

+0

미안 해요 windows 양식 –

답변

0

ListView를 사용하는 것이 좋습니다 (세부 정보보기 설정 및 세 개의 열이있는 머리글 추가). 로드 파일에 대한

private void addLineToListView(String col1Text, String col2Text, String col3Text) 
    { 
     ListViewItem lvItem; 
     if ((lvItem = this.listView1.Items.Add(col1Text)) != null) 
     { 
      lvItem.SubItems.Add(col2Text); 
      lvItem.SubItems.Add(col3Text); 
     } 
    } 

그것은 간단뿐만 아니라입니다 :

private void AggregateTextFileIntoListView(String pathToFile) 
    { 
     using (TextReader tr = new StreamReader(pathToFile))) 
      { 
       String line; 
       while ((line = tr.ReadLine()) != null) 
       { 
        //* let's delimiter be ";". 
        String[] lineParts = line.Split(';'); 
        addLineToListView(lineParts[0], lineParts[1], lineParts[2]); 
       } 

       tr.Close(); 
      } 
} 
+0

팁 주셔서 감사합니다, 나는 코드를 시도하고 단지 어떤 이유로 든 0 열로 채워져, 그랬다 : 0 | 0 | 0 0 | 1 | 2 대신 –

0

두 개 이상의 열이 필요한 경우 ListBox 대신 ListView을 사용해야합니다.

ListView lv = new ListView(); 
using (FileStream fs = new FileStream(@"c:\whatever.txt", FileMode.Open)) 
{ 
    StreamReader reader = new StreamReader(fs); 
    while (!reader.EndOfStream) 
    { 
     string line = reader.ReadLine(); // e.g. "BOB|SMITH|JR." 
     string[] coldata = line.Split('|'); 
     ListViewItem item = new ListViewItem(coldata); 
     lv.Items.Add(item); 
    } 
} 

참고 :이 양식에 ListView에 배치 Details로 모드를 설정하고 당신이 필요하지만 많은 열 헤더를 추가 할 때.