Pergunta

Eu tenho um problema com uma instrução continue em meu loop C # Foreach.

Eu quero-o para verificar se há uma célula em branco na datagridview, e se assim for, então pule a impressão do valor para fora e continuar a verificar a próxima célula.

Ajuda muito apreciada.

Aqui está o código:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}
Foi útil?

Solução

Bem, você está verificando atualmente se tamanho da célula é zero. Em uma grade, cada célula em uma coluna tem a mesma largura e cada célula de uma linha tem a mesma altura (tipicamente, pelo menos).

Você quer estar verificando com base no valor da célula. Por exemplo:

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

Tweak esta para quaisquer outras representações de "esvaziar" os valores que você está em interessado Se houver muitos, você pode querer escrever um método específico para isso, e chamá-lo na verificação:.

if (IsEmptyValue(cell.Value))
{
    continue;
}

Outras dicas

Você não precisa usar a continuar a palavra-chave aqui, você pode simplesmente fazer isso:

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
    }
}

Além disso, você está verificando se o tamanho da célula está vazio. Isso é realmente o que você quer fazer?

O que erros você está recebendo?

Você não deveria estar verificando se o valor da célula está vazio e não o tamanho?

if(String.IsNullOrEmpty(cell.Value.ToString()))
    continue;

eu quero ler única célula [1] dados ... 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());
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top