【问题标题】:There is no last entered value taken from dataGridView没有从 dataGridView 获取的最后输入值
【发布时间】:2021-01-07 09:09:17
【问题描述】:
FileStream fs = new FileStream(@"file.txt", FileMode.Create);
StreamWriter streamwriter = new StreamWriter(fs);

try
{
    for (int j = 0; j < dataGridView1.Rows.Count -1 ; j++)
    {
        for (i = 0; i < dataGridView1.Rows[j].Cells.Count; i++)
        {
            streamwriter.Write(dataGridView1.Rows[j].Cells[i].Value + "#");
        }

        streamwriter.WriteLine("\n");
    }

    streamwriter.Close();
    fs.Close();
    MessageBox.Show("File saved successfully!");
}
catch
{
    MessageBox.Show("File save failed!");
}

此函数应该将值从DataGridView传输到文件,但最后一个值不会不断写入。我意识到它会删除我输入的最后一个元素

应该是这样的:

Name1#Lastname1#Number1#Home1#

这是真实的结果:

Name2#Lastname2#Number2##

【问题讨论】:

  • 测试了你的代码,一切正常。您是否错过了重现问题的一些步骤?你在哪里执行代码?通过按钮单击?还是任何 datagridview 事件?
  • MenuStrip 。我意识到它删除了我输入的最后一个元素
  • 将您的第一个循环条件从 dataGridView1.Rows.Count - 1 更改为 dataGridView1.Rows.Count
  • 它的作用相同,但添加了另一个空行。

标签: c# winforms datagridview text-files txt


【解决方案1】:

问题在于你的循环迭代行,现在你的条件是

j &lt; dataGridView1.Rows.Count -1

这意味着如果行数为 10,您的循环将遍历索引 0 到 8,并跳过索引 9。

你应该改变你的条件

j &lt; dataGridView1.Rows.Count

【讨论】:

  • 它的作用相同,但添加了另一个空行。
【解决方案2】:

如果DataGridView’s 属性AllowUsersToAddRows 设置为true,则发布的代码将起作用。如果设置为false,那么发布的代码将错过网格中的最后一行。

此外,根据网格DataSource,数据源本身可能不允许新行或被结构化以添加新行。在这种情况下,AllowUsersToAddRows 属性变得无关紧要,但是在任何一种情况下……发布的代码仍然会错过最后一行。

由于代码在技术上是正确的“IF”,因此网格的 AllowUsersToAddRows 属性设置为 true。而且,您的问题似乎是关于“缺失”的最后一行……我假设网格 AllowUsersToAddRows 属性设置为 false 或数据源不允许添加新行。

为了避免这个问题……我建议在行循环中额外检查这个“新”行。如果您在行循环中检查“新”行,则网格AllowUsersToAddRows 属性是true 还是false 无关紧要。同样在行和单元格中使用foreach 循环可能会使事情变得更容易,并且可能看起来像……

foreach (DataGridViewRow row in dataGridView1.Rows) {
  if (!row.IsNewRow) {
    foreach (DataGridViewCell cell in row.Cells) {
      streamwriter.Write(cell.Value + "#");
    }
    streamwriter.WriteLine("");
  }
}

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2014-10-30
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2019-04-26
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多