【问题标题】:Remove last row from DataGridView row count从 DataGridView 行数中删除最后一行
【发布时间】:2015-05-24 15:59:10
【问题描述】:

我在 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


    【解决方案1】:

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

    【讨论】:

    • 你也可以对枚举做一些事情,比如stackoverflow.com/a/1779328/1264905。这仍然可以让您使用 foreach。
    • @molnargab,我认为这样的解决方案在这里有点矫枉过正;行数已知,问题是排除最后一行。但是是的,它也应该解决问题
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-02-05
        • 1970-01-01
        • 2010-09-15
        • 2013-12-19
        • 1970-01-01
        • 1970-01-01
        • 2022-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多