从DataGridView行数中删除最后一行

问题描述 投票:0回答:3

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

重要:不允许将AllowUsersToAddRows设置为false,因为此功能是必需的。

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

我不是想解决遇到的问题NullReferenceException,我想知道如何通过除最后自动添加的行之外的所有行执行循环。

c# visual-studio datagridview foreach rowcount
3个回答
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());
}

0
投票

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

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

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

-2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.