none
DataGridView - Alle Zellen auslesen. RRS feed

  • Frage

  • Guten Abend,

    ich versuche, meine DataGridview auszulesen, nur funktioniert das ganze nicht so wie gewollt. 

    Hier ist der Code: 

           private void bAusrechnen_Click(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in GridView.Rows)
                {
                    MessageBox.Show("ROW");
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        MessageBox.Show("CELL");
                        if (IstKorrekterWert(cell)) { MessageBox.Show("ALLES KLAR"); }
                    }
                }
            }
            private Boolean IstKorrekterWert(DataGridViewCell dgvCell)
            {
                double dNum;
                CultureInfo cFormat = CultureInfo.CurrentCulture;
                if(dgvCell.Value != null)
                {
                    if (Double.TryParse(dgvCell.Value.ToString(), System.Globalization.NumberStyles.Float, cFormat, out dNum))
                    {
                        MessageBox.Show(dNum.ToString());
                        return true;
                    }
                }
                return false;
            }



    Ich habe 2 Columns. Wenn jetzt zum Beispiel in einer Row nur eine Zelle einen Inhalt hat, der in IstKorrekterWert() abgefragt wird, wird mir trotz richtiger Eingabe einfach keine Erfolgsnachricht angezeigt. Irgendwie ist der Inhalt der Zelle dann null. Was mache ich hier falsch?

    Grüße,

    Donnerstag, 14. November 2013 18:58

Antworten

  • Hallo,
    soweit ich weiß was du vor hast, funktioniert dein Code bei mir.

    Nochmal zur Erklärung:
    Die Rows-Auflistung enthält alle Zeilen des DGV. Die Cells-Auflistung jeder Row enthält die Zellen. Soweit sollte das Klar sein. Soweit sollte alles Klar sein. Die Schleifen durchlaufen das DGV von oben nach unten und die Zellen von links nach rechts.

    Deine IstKorrekt-Methode liefert bei mir für 1 und 18,4 true, was auch richtig ist. Andere Zeichenfolgen und Zahlen mit einem Punkt als Dezimaltrennzeichen (Bsp.: 12.3) funktionieren natürlich nicht (liegt u.a. an der Kultur).

    Wenn irgendetwas scheinbar nicht funktioniert, dann setze mal einen BreakPoint bei der jeweiligen Zeile (F9). Dann wird der Quellcode dort angehalten. Mit F11 kannst du Zeilenweise weiter machen. Durch Zeigen auf Variablen erfährst du deren Wert.

    PS: Eventuell ist es auch besser das DGV an eine Auflistung zu binden. Wie das geht, erfährst du hier.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 14. November 2013 19:22
    Moderator