从 DataGridView 行数中删除最后一行

Remove last row from DataGridView row count

我用 C# 创建了一个 foreach loop。我试图遍历除最后一行之外的所有行,它是自动添加的。由于单元格不包含任何值,我收到 NullException。

重要提示: 将 AllowUsersToAddRows 设置为 false 不是一个选项,因为此功能是必需的。

foreach (DataGridViewRow row in VRFileDataGrid.Rows)
    {
        Console.WriteLine(row.Cells[0].Value.ToString());
    }

我不是要修复遇到的问题 NullReferenceException,我想知道如何对除最后自动添加的行之外的所有行执行循环。

我通过在循环前设置 VRFileDataGrid.AllowUserToAddRows = false; 并在循环后设置 VRFileDataGrid.AllowUserToAddRows = true; 来修复它。

可能不是最好的解决方案,但我工作得很好。

考虑使用 for 循环代替 foreach

VRFileDataGrid.Rows.Count - 1表示除最后一行以外的所有行

for(int r = 0; r < VRFileDataGrid.Rows.Count - 1; r++)
{
   DataGridViewRow row = VRFileDataGrid.Rows[r];
   Console.WriteLine(row.Cells[0].Value.ToString());
}

自动添加的最后一行的 IsNewRow 属性 设置为 true。您可以直接跳过它:

foreach (DataGridViewRow row in VRFileDataGrid.Rows)
{
    if (row.IsNewRow)
        continue;

    Console.WriteLine(row.Cells[0].Value.ToString());
}