Frage

Ich habe ein Problem mit einer continue-Anweisung in meiner C # Foreach Schleife.

Ich mag es zu überprüfen, ob es eine leere Zelle im Datagridview ist, und wenn ja, dann überspringen Sie den Wert Ausdrucke und trägt auf die nächste Zelle zu überprüfen.

Hilfe sehr geschätzt.

Hier ist der Code:

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

Lösung

Nun, Sie prüft derzeit, ob die Zelle Größe ist gleich Null. In einem Raster hat jede Zelle in einer Spalte die gleiche Breite und jede Zelle in einer Reihe die gleiche Höhe (in der Regel sowieso).

Sie wollen sich auf die Wert zu Prüfung basiert der Zelle. Zum Beispiel:

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

Tweak dies für andere Darstellungen von „leeren“ Werte, die Sie interessiert sind Wenn es viele sind, könnten Sie eine bestimmte Methode für diese schreiben wollen, und nennen es in der Prüfung.

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

Andere Tipps

Sie brauchen nicht die weiter Begriff hier zu verwenden, könnte man dies nur tun:

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

Auch Sie überprüfen, ob die Größe der Zelle leer ist. Ist das wirklich das, was Sie tun möchten?

Welche Fehler werden Sie bekommen?

Wenn Sie nicht überprüft werden, wenn der Wert der Zelle nicht die Größe leer ist?

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

ich will nur Zelle lesen [1] Daten ... 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());
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top