2017-03-04 112 views
0

我創建了一個Windows窗體這需要用戶輸入並以逗號分隔的方式寫入到一個文本文件,並追加每個新行。我希望能夠讀取該文件中的所有數據,並以富文本框或標籤的形式將其顯示給其他窗體上的用戶。C#閱讀從逗號分隔文本文件到Windows窗體

下面的代碼是我在數據讀取到我的機器上的特定位置。我不確定我是否首先需要將數據讀入數組,然後將其發送到標籤或文本框。

using (StreamWriter InputFile = File.AppendText(@"C:\Users\person\Desktop\C#\New Text Document.txt")) 
     { 
      InputFile.WriteLine(textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + "," + textBox4.Text); 
      MessageBox.Show("Data Saved!"); 

我知道還有很多其他的帖子是這樣,但我似乎無法得到我要找的

+0

如果用戶在文本框中輸入逗號,會發生什麼? – Enigmativity

+0

@Enigmativity甚至不要讓我開始.... – Justin

回答

0

是一定要仔細閱讀陣列中的所有行的答案,並使用代碼像下面

var lines =File.ReadAllLines(@"C:\Users\person\Desktop\C#\New Text Document.txt"); 
      foreach (var line in lines) 
      { 
       var col = line.Split(','); 
       textBox1.Text = col[0]; 
        textBox2.Text = col[1]; 
       textBox3.Text = col[2]; 
       textBox4.Text = col[3]; 
      } 
+0

當我用這個例子,我剛剛得到的最後一行讀回....未在文件中的一切 – Justin

+0

當然,你需要插入不同的文本框的數據在每個循環! –

+0

@Justin - 這是因爲這就是代碼的工作原理。你的示例代碼顯示你只寫出一行,所以這段代碼有效的只是最後一行。 – Enigmativity

1

沒有,你可以使用File.ReadLines,它返回一個IEnumerable<string>

int i = 1; 
foreach (string line in File.ReadLines(path)) { 
    string[] columns = line.Split(','); 
    for (int c = 0; c < columns.Length; c++) { 
     ((TextBox)Controls["textBox" + i++]).Text = columns[c]; 
    } 
} 

我假設你有文本框的名字textBox1textBox4的第一線,textBox5textBox8第二行,依此類推。但是使用網格可能會更好。

考慮命名空間Microsoft.VisualBasic.FileIO也使用TextFieldParser。它爲你完成所有的CSV處理。您將不得不添加對Microsoft.VisualBasic.dll的引用。

注:在Microsoft.VisualBasic.dll中的東西僅僅是一個.NET庫像任何其他在C#中的工作以及在VB。

相關問題