2017-03-04 113 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。

相关问题