Domanda

Ho un problema con un'istruzione continue nel mio ciclo Foreach C #.

Voglio che controlli se c'è una cella vuota in Datagridview e, in tal caso, quindi saltare la stampa del valore e continuare a controllare la cella successiva.

Aiuto molto apprezzato.

Ecco il codice:

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

Soluzione

Bene, al momento stai verificando se la dimensione della cella è zero. In una griglia, ogni cella in una colonna ha la stessa larghezza e ogni cella in una riga ha la stessa altezza (in genere, comunque).

Desideri verificare in base al valore della cella. Ad esempio:

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

Modificalo per qualsiasi altra rappresentazione di "vuoto". valori che ti interessano. Se ci sono molti, potresti voler scrivere un metodo specifico per questo e chiamarlo nel segno di spunta:

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

Altri suggerimenti

Non è necessario utilizzare la parola chiave continue qui, puoi semplicemente farlo:

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

Inoltre, stai verificando se la dimensione della cella è vuota. È davvero quello che vuoi fare?

Quali errori stai riscontrando?

Non dovresti controllare se il valore della cella è vuoto e non la dimensione?

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

Voglio leggere solo i dati della cella [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());
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top