2017-01-05 71 views
0

我有一個帶有10行的txt文件,每行是一個包含5個不同字段的記錄; Farrell,Jade,Louise,2011/09/13,F讀取.txt文件一行一行地放入多個文本框中,並在C#窗體中按鈕。

我正在使用逗號分隔FamilyName,FirstName,MiddleName,EnrolmentDate和Gender記錄。我希望每個字段都有自己的文本框,然後使用按鈕查看不同的記錄。

到目前爲止所做的一切都是在加載按鈕下工作的,它從文件中讀取數據,並使用下面的代碼將其放入文本框中,但它只顯示第一條記錄,所以我想要一個按鈕來顯示下一條記錄,以前的記錄,第一個和最後一個記錄,還有一個按姓名排序來自AZ的數據的按鈕。任何關於如何前進的幫助都會很棒!謝謝!

private void Load_BT_Click(object sender, EventArgs e)   
{ 
    OpenFileDialog filechooser = new OpenFileDialog(); 
    StreamReader filereader = new StreamReader("StudentFile.txt"); 
    String inputrecord = filereader.ReadLine(); 
    string[] inputfields; 

    if (inputrecord != null) 
    { 
     inputfields = inputrecord.Split(','); 
     FamName_TXT.Text = inputfields[0]; 
     FirstName_TXT.Text = inputfields[1]; 
     MiddleName_TXT.Text = inputfields[2]; 
     Enrolment_txt.Text = inputfields[3]; 
     Gender_TXT.Text = inputfields[4]; 
    } 
    else 
    { 
     MessageBox.Show("End of File"); 
    }   
} 
+0

你在這裏問了很多問題,你能澄清你到底需要什麼幫助嗎?另外,你嘗試過什麼解決方案? – maccettura

回答

0

我認爲這裏有一些設計問題,但我會解決您的直接關注。問題是你只能讀一行。您需要遍歷文本文件中的所有行。我假設你想要加載按鈕一次加載所有的數據。

string[] allRecords = filereader.ReadAllLines(); 
foreach(string inputRecord in allRecords) { 
    string[] inputfields = inputRecord.Split(','); 
    //insert the textbox.Text += inputfields[0] + "\n"; etc 
} 

如果您希望單個按鈕可以在所有文本框之間調用數據。

  1. 你真的應該創建一個名爲Person的類,其屬性對應於你的字段並且重寫compareTo,這樣你可以按姓氏排序或者可以使用linq爲你排序。
  2. 你需要將承載所有這些人從那裏對象
  3. 可以填充文本框相應
  4. 創建分類按鈕,將重新排序列表,或者創建一個新的列表,並重新填充文本框列表。

1-3將在加載按鈕中完成。 person類的原因是因爲您希望從文件中讀取的所有數據都與某個對象關聯。如果您試圖直接從文本框中進行排序,您似乎會遇到問題,例如如何確保數據不會混亂。這當然可能是可能的,但它不是一種優雅的方式,並會在我的腦海中更多的工作

相關問題