如何将for循环更改为foreach,同时迭代DataGridView控件值

本文关键字:迭代 DataGridView 控件 foreach for 循环 | 更新日期: 2023-09-27 18:07:57

我使用了以下代码:

int count = DB.Rows.Count;
for (int row = 0; row < count; row++)
{
    int colCount = DB.Rows[row].Cells.Count;
    for (int col = 0; col < colCount; col++)
    {
        filewrite.Write(DB.Rows[row].Cells[col].Value + " ");
    }
    filewrite.WriteLine("");
}

我想把它重写为foreach循环,但是我得到了这个异常:

System.Windows.Forms。DataGridViewRowCollection'不包含定义'Cells',并且没有扩展方法'Cells'接受a类型的第一个参数"System.Windows.Forms。可以找到DataGridViewRowCollection您缺少using指令或程序集引用吗?)

我代码:

foreach (DataGridView row in this.DB.Rows)
{
    foreach (DataGridView col in this.DB.Columns)
    {
        filewrite.Write(DB.Rows.Cells + " ");
    }
    filewrite.WriteLine("");
}

有谁能帮助我或给我一个提示吗?

编辑

快明白了!,现在我需要这个循环不读取最后一行,它是自动生成的空行:

foreach (DataGridViewRow item in this.DB.Rows)
{
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(item2.Value != null)
        filewrite.Write(item2.Value.ToString() + " ");
    }
    filewrite.WriteLine("");
}

如何省略最后一个空行?

如何将for循环更改为foreach,同时迭代DataGridView控件值

试试下面的代码:

foreach (DataGridViewRow row in this.DB.Rows)
{
    // Add this to break the loop when row is last blank row
    if (row.IsNewRow)
        break;
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Value != null)
            filewrite.Write(cell.Value.ToString() + " ");
    }
    file.WriteLine();
}

我假设您正在尝试将每行单元格中的所有值打印到文本文件中。如果是这种情况,这应该完成任务。