C# 从DataGridView行计数中删除最后一行

C# 从DataGridView行计数中删除最后一行,c#,visual-studio,datagridview,foreach,rowcount,C#,Visual Studio,Datagridview,Foreach,Rowcount,我在C#中创建了一个foreach循环。我试图在所有行中循环,但最后一行除外,它是自动添加的。因为单元格不包含任何值,所以我得到一个NullException 重要提示:将AllowUsersToAddRows设置为false不是选项,因为此函数是必需的 foreach (DataGridViewRow row in VRFileDataGrid.Rows) { Console.WriteLine(row.Cells[0].Value.ToString()); }

我在C#中创建了一个
foreach循环。我试图在所有行中循环,但最后一行除外,它是自动添加的。因为单元格不包含任何值,所以我得到一个NullException

重要提示:将AllowUsersToAddRows设置为false不是选项,因为此函数是必需的

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

我没有试图修复met
NullReferenceException
,我想知道如何通过所有行执行循环,最后自动添加的行除外。

我通过设置
VRFileDataGrid.AllowUserToAddress=false来修复它和设置
VRFileDataGrid.allowUserToAddress=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());
}
for(int r=0;r
自动添加的最后一行将其
IsNewRow
属性设置为
true
。您可以跳过它:

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

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

您还可以对可枚举项执行某些操作,例如。这仍然可以让你使用foreach。@molnargab,我认为这样的解决方案在这里太过分了;行计数已知,问题是排除最后一行。但是是的,它也应该解决这个问题