2016-10-04 7 views
0

Hallo möchte ich zwei Zellen, beide mit Zahlenwert zu vergleichen. Wenn Zelle1 größer als Zelle2 ist, wird die Farbzelle grün angezeigt.Wenn DataGridView Zelle Wert größer als eine andere Zelle

Hier ist mein Code: In Zellformating in Datagridview

foreach (DataGridViewRow row in this.dataGridView1.Rows) 
     { 
      if (row.Cells[3].Value.ToString() > (row.Cells[4].Value.ToString())) 
      { 
       row.Cells[3].BackColor = Color.PaleGreen; 
      } 

aber ich bekomme zwei Fehler: Im ersten Zeile Operator ‚>‘ angewendet werden kann, nicht auf die Operanden vom Typ ‚String‘ und ‚string‘ und in Die zweite Zeile System.Windows.Forms.DataGridViewCell 'enthält keine Definition für' BackColor 'und keine Erweiterungsmethode' BackColor ', die ein erstes Argument vom Typ' System.Windows.Forms.DataGridViewCell 'akzeptiert.

Antwort

0

sind beide dieser Fehler gültig. Sie übergeben die Zellenwerte an Zeichenfolgen, aber wenn Sie als Zahlen vergleichen möchten, müssen Sie sie zu Zahlen machen. Auch die BackColor befindet sich in der Style-Eigenschaft der Zelle. So soll Ihr Code aussehen wie folgt aus:

foreach (DataGridViewRow row in this.dataGridView1.Rows) 
{ 
    double value1; 
    double value2; 
    if(!double.TryParse(row.Cells[3].Value.ToString(), out value1) || !double.TryParse(row.Cells[4].Value.ToString(), out value2)) 
    { 
     // throw exception or other handling here for unexcepted values in cells 
    } 
    else if (value1 > value2) 
    { 
     row.Cells[3].Style.BackColor = Color.PaleGreen; 
    } 
+0

Fehler Nur Zuordnung, Aufruf, Erhöhung, Senkung und neue Objekt Ausdrücke als Anweisung verwendet werden kann – user6894907

+0

Sorry, einen kleinen Syntaxfehler in diesem Code festgelegt ... – rmc00

+0

Ich bekomme diesen Fehler in dieser Zeile: else (value1> value2); – user6894907

0

Sie brauchen um die Zeichenfolge in int, double, long, decimal oder eine andere Zahl zu konvertieren.

Momentan versuchen Sie, 2 Strings miteinander zu vergleichen, als wären sie Nummern.

Mit .Wert ohne .ToString() sollte funktionieren, wenn j richtig erinnere

Verwandte Themen