簡體   English   中英

使用ac#Windows窗體中的按鈕逐行將.txt文件讀入多個文本框

[英]Reading a .txt file line by line into multiple text boxes with buttons in a c# windows form

我有一個txt文件,其中有10行,每行是一個包含5個不同字段的記錄; 法雷爾,玉,路易絲,2011/09/13,F

我正在使用逗號按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");
    }         
}

我認為這里存在一些設計問題,但是我將解決您的直接關注。 問題是您只能讀一行。 您需要遍歷文本文件中的所有行。 我假設您希望加載按鈕一次加載所有數據。

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將在加載按鈕中完成。 使用人員類的原因是因為您希望將從文件中讀取的所有數據與對象相關聯。 如果您試圖像嘗試做的那樣直接從文本框中進行排序,則會遇到諸如如何確保數據不會混亂的問題。 當然有可能,但是這不是一種優雅的方式,在我看來會做得更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM