Question

J'ai un problème avec une instruction continue dans ma boucle C # Foreach.

Je veux qu'il vérifie s'il y a une cellule vide dans la datagridview, et si oui, alors saute l'impression de la valeur et continue pour vérifier la cellule suivante.

L’aide a été grandement appréciée.

Voici le code:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}
Était-ce utile?

La solution

Eh bien, vous êtes en train de vérifier si la taille de la cellule est égale à zéro. Dans une grille, chaque cellule d’une colonne a la même largeur et chaque cellule d’une rangée a la même hauteur (généralement, en tout cas).

Vous souhaitez vérifier en fonction de la valeur de la cellule. Par exemple:

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

Modifiez cette option pour toute autre représentation de " empty " Les valeurs qui vous intéressent. S'il y en a beaucoup, vous pouvez écrire une méthode spécifique à cet effet et l'appeler dans le contrôle:

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

Autres conseils

Vous n'avez pas besoin d'utiliser le mot clé continue ici, vous pouvez simplement faire ceci:

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

De plus, vous vérifiez si la taille de la cellule est vide. Est-ce vraiment ce que vous voulez faire?

Quelles erreurs obtenez-vous?

Ne devriez-vous pas vérifier si la valeur de la cellule est vide et non sa taille?

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

Je veux lire uniquement les données de cellule [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());
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top