Я использовал следующий код:
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("");
}
Как опустить последнюю пустую строку?
Попробуйте этот код:
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();
}
Я предполагаю, что вы пытаетесь распечатать все значения из ячеек в каждой строке в текстовый файл. Если это так, это должно выполнить задачу.
DataGridViewRow
а второйDataGridViewColumn
?