C # Foreach Loop - Продолжить выпуск - PullRequest
6 голосов
/ 02 мая 2009

У меня проблема с оператором 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());
    }
}

Ответы [ 4 ]

16 голосов
/ 02 мая 2009

Что ж, вы сейчас проверяете, равен ли размер ячейки нулю. В сетке каждая ячейка в столбце имеет одинаковую ширину, а каждая ячейка в строке имеет одинаковую высоту (как правило, в любом случае).

Вы хотите выполнять проверку на основе значения ячейки. Например:

if (cell.Value == null || cell.Value.Equals(""))
{
    continue;
}

Настройте это для любых других представлений "пустых" значений, которые вас интересуют. Если есть много, вы можете написать для этого определенный метод и вызвать его в проверке:

if (IsEmptyValue(cell.Value))
{
    continue;
}
4 голосов
/ 02 мая 2009

Здесь вам не нужно использовать ключевое слово 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
    }
}

Кроме того, вы проверяете, пуст ли размер ячейки. Это действительно то, что вы хотите сделать?

Какие ошибки вы получаете?

2 голосов
/ 02 мая 2009

Разве вы не должны проверять, является ли значение ячейки пустым, а не размером?

if(String.IsNullOrEmpty(cell.Value.ToString()))
    continue;
1 голос
/ 21 апреля 2010

я хочу читать только данные ячейки [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());
    }
}
...