2010-06-09 61 views
1

我需要我的程序將包含在txt文件中的數據的不同部分顯示到不同的列表框中(這些列表框位於表單的不同選項卡上),以便用戶可以看到特定的數據塊。有興趣的將文本文件讀入列表框集合

包含在TXT文件中的數據是這樣的:

G30:39:03:31 JG06 
G32:56:36:10 JG04 
G31:54:69:52 JG04 
G36:32:53:11 JG05 
G33:50:05:11 JG06 
G39:28:81:21 JG01 
G39:22:74:11 JG06 
G39:51:44:21 JG03 
G39:51:52:22 JG01 
G39:51:73:21 JG01 
G35:76:24:20 JG06 
G35:76:55:11 JG01 
G36:31:96:11 JG02 
G36:31:96:23 JG02 
G36:31:96:41 JG03 

但更多的是:)

單獨的列表框將只包含誰的第一個整數值對比賽的線該列表框的名稱。例如,所有開始「G32」的行將被添加到G32列表框中。

我覺得代碼將開始類似:

private void ReadToBox() 
    { 
     FileInfo file = new FileInfo("Jumpgate List.JG"); 
     StreamReader objRead = file.OpenText(); 
     while (!objRead.EndOfStream) 

但我不知道從哪裏得到它整理尚未方面入手。

任何幫助?有它的一些代表對您:d

編輯:

private void ViewForm_Load(object sender, EventArgs e) 
    { 
     this.PopulateListBox(lstG30, "G30", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG31, "G31", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG32, "G32", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG33, "G33", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG34, "G34", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG35, "G35", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG36, "G36", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG37, "G37", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG38, "G38", ("Jumpgate List.JG")); 
     this.PopulateListBox(lstG39, "G39", ("Jumpgate List.JG")); 
    } 

    void PopulateListBox(ListBox lb, string prefix, string textfile) 
    { 
     string[] filestrings = textfile.Split(Environment.NewLine.ToCharArray()); 
     foreach(string line in filestrings) 
     { 
      if (line.StartsWith(prefix)) 
       lb.Items.Add(line); 
     } 
    } 
+1

Arcadian,該方法的'textfile'參數期望文件爲字符串,而不是文件名本身。在填充列表框之前,將文件讀入一個字符串,例如:'string s = String.Empty;使用(StreamReader sr = File.OpenText(filename)){s = sr.ReadToEnd(); }' – JYelton 2010-06-10 06:14:18

+0

它做到了。感謝你的幫助。 – Arcadian 2010-06-10 06:56:32

+0

不客氣,祝你好運! – JYelton 2010-06-10 14:58:22

回答

2

一些半僞...你會打電話來填充每個列表框的方法。指定列表框控件,要隔離的前綴,輸入文件:

void PopulateListBox(ListBox lb, string prefix, string[] textfile) 
{ 
    foreach(string line in textfile) 
    { 
     if (line.StartsWith(prefix)) 
     lb.Add(line); 
    } 
} 

編輯:

此方法處理文件作爲一個字符串(而不是期望的字符串數組):

void PopulateListBox(ListBox lb, string prefix, string textfile) 
{ 
    string[] filestrings = textfile.Split(Environment.NewLine.ToCharArray()); 
    foreach(string line in filestrings) 
    { 
     if (line.StartsWith(prefix)) 
     lb.Add(line); 
    } 
} 
+0

我在想這會是這樣的。這並不意味着你將不得不爲每個列表框有一個新的方法?希望有一個更快的方法。 – Arcadian 2010-06-09 22:04:16

+1

不,你提供了你想在方法調用中填充的列表框的名字,所以如果你已經命名了你的列表框,例如'lstbG32',那麼你應該這樣做:'PopulateListBox(lstbG32,「G32」,txt );' – JYelton 2010-06-09 22:34:04

+0

對不起,金髮碧眼的時刻,我現在得到它。我在foreach部分得到一個公會錯誤,雖然說不能將字符串轉換爲字符串 – Arcadian 2010-06-09 23:08:29