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

时间:2015-05-24 15:59:10

标签: c# visual-studio datagridview foreach rowcount

我在C#中创建了foreach loop。我试图循环除了最后一行之外的所有行,这是自动添加的。由于单元格不包含任何值,因此我得到NullException。

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

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

我不是要修复遇见NullReferenceException,我想知道如何通过除最后一次自动添加的行之外的所有行执行循环。

3 个答案:

答案 0 :(得分:2)

考虑使用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());
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:-2)

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

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

相关问题