C # Foreach Loop - Continuar Edição
-
03-07-2019 - |
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());
}
}
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());
}
}