【问题标题】:C# Reading from Comma Separated Text File to Windows FormC# 从逗号分隔的文本文件读取到 Windows 窗体
【发布时间】:2017-03-04 22:23:37
【问题描述】:

我创建了一个 Windows 窗体,它接受用户输入并以逗号分隔的方式将其写入文本文件,并附加每个新行。我希望能够从该文件中读取所有数据,并以富文本框或标签的形式在另一个 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!");

我知道还有很多其他类似的帖子,但我似乎无法得到我正在寻找的答案

【问题讨论】:

  • 如果用户在文本框中输入逗号会怎样?
  • @Enigmativity 别让我开始......

标签: c# arrays winforms csv


【解决方案1】:

是的,您必须读取数组中的所有行并使用如下代码

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]; 
            } 

【讨论】:

  • 当我使用这个例子时,我只是读回最后一行......不是文件中的所有内容
  • 当然每次循环都需要在不同的文本框中插入数据!
  • @Justin - 那是因为这就是这段代码的工作方式。您的示例代码显示您只写了一行,因此该代码实际上只获取了最后一行。
  • 我实际上使用的是标签,而不是文本框,但我确实意识到这可能不是解决此问题的最佳方法。如何一次列出文本文件中的所有内容?
  • 使用网格@Justin
【解决方案2】:

不,您可以使用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 中一样好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多