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

时间:2014-06-10 22:06:12

标签: c# for-loop datagridview foreach

我使用了以下代码:

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'(是   你错过了使用指令或程序集引用?)

我的代码:

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("");
}

如何省略最后一个空行?

1 个答案:

答案 0 :(得分:0)

尝试使用此代码:

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();
}

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