Вопрос

У меня проблема с оператором 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());
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top