Как изменить цикл for на foreach, просматривая значения элемента управления DataGridView?

1

Я использовал следующий код:

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" не содержит определения для "Ячейки" и никакого метода расширения "Ячейки", принимающие первый аргумент типа "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("");
}

Как опустить последнюю пустую строку?

  • 0
    Что ты пытаешься сделать? Что бы это ни было, похоже, вы делаете это намного сложнее, чем нужно.
  • 0
    Разве ваш первый foreach не должен иметь тип DataGridViewRow а второй DataGridViewColumn ?
Показать ещё 1 комментарий
Теги:
for-loop
foreach
datagridview

1 ответ

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

Я предполагаю, что вы пытаетесь распечатать все значения из ячеек в каждой строке в текстовый файл. Если это так, это должно выполнить задачу.

  • 0
    Не работает к сожалению :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню