C # Foreach Loop - Suite numéro
-
03-07-2019 - |
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());
}
}
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());
}
}