从文本文件 C# 中加载 dataGridView 中的单元格值

Loading cell values in dataGridView from text file C#

我正在使用 StreamWriter 在 dataGridView 中的所有现有单元格上写入所有值,该编写器工作完美。但是我的 reader 工作不是很好。

这是我的作者代码(没有问题):

 StreamWriter writer = new StreamWriter(valuePath);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                writer.WriteLine(cell.Value);
            }
        }
        writer.Close();

这是我的 reader 代码:

StreamReader sr = new StreamReader(valuePath);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                cell.Value = sr.ReadLine();
            }
        }
        sr.Close();

输出: 星期一 1 星期二 2 星期三 3

此代码将 txt 文件中的每一行读入我的 dataGridView 中的 "existing cells",因此当应用程序打开时,只有一行。这就是为什么我的 reader 不能正常工作。有人可以帮我解决这个问题吗??

我建议您以这种格式编写文本文件:

单元格 1、单元格 2、...

单元格 1、单元格 2、...

单元格 1、单元格 2、...

...

为此,请将您的 writer 代码更改为:

StreamWriter writer = new StreamWriter(valuePath);
string line;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    line = "";
    foreach (DataGridViewCell cell in row.Cells)
    {
        line += cell.Value.ToString();
    }
    writer.WriteLine(line);
}
writer.Close();

reader 代码应相应更改为:

StreamReader sr = new StreamReader(valuePath);
string line;
string[] values;
int n=0;

while(!sr.EndOfStream)
{
    line = sr.ReadLine();
    values = line.Split(',');

    for(int m=0; m<values.Length; m++)
    {
       dataGridView1[m, n].Value = values[m];
    }
    n++;
}
sr.Close();