C # Foreach Loop - Продолжить выпуск
-
03-07-2019 - |
Вопрос
У меня проблема с оператором continue в цикле Cach Foreach.
Я хочу, чтобы он проверил, есть ли пустая ячейка в сетке данных, и если да, то пропустите печать значения и продолжите, чтобы проверить следующую ячейку.
Помощь очень ценится.
Вот код:
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (cell.Size.IsEmpty)
{
continue;
}
MessageBox.Show(cell.Value.ToString());
}
}
Решение
Ну, вы сейчас проверяете, равен ли размер ячейки ячейке нулю. В сетке каждая ячейка в столбце имеет одинаковую ширину, а каждая ячейка в строке имеет одинаковую высоту (как правило, в любом случае).
Вы хотите выполнять проверку на основе значения ячейки. Например:
if (cell.Value == null || cell.Value.Equals(""))
{
continue;
}
Настройте это для любых других представлений "пусто" значения, которые вас интересуют. Если их много, вы можете написать специальный метод для этого и вызвать его в проверке:
if (IsEmptyValue(cell.Value))
{
continue;
}
Другие советы
Здесь вам не нужно использовать ключевое слово continue, вы можете просто сделать это:
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (!cell.Size.IsEmpty) MessageBox.Show(cell.Value.ToString()); // note the ! operator
}
}
Кроме того, вы проверяете, является ли размер ячейки пустым. Это действительно то, что вы хотите сделать? Р>
Какие ошибки вы получаете?
Разве вы не должны проверять, является ли значение ячейки пустым, а не размером?
if(String.IsNullOrEmpty(cell.Value.ToString()))
continue;
я хочу читать только данные ячейки [1] ... olny
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells[1])
{
if (cell[1].Value == null || cell.Value.Equals(""))
{
continue;
}
MessageBox.Show(cell[1].Value.ToString());
}
}