2016-08-02 11 views
0

Ich stecke hier fest.
Ich habe ein DataGridView mit 8 Spalten (das siebte wartet auf Benutzereingaben und das achte tut etwas Mathe).
Dies ist das übergeordnete FormularWie fügt man Werte aus mehreren DataGridViewCell hinzu und gibt sie an TextBox aus?

Parent Form

Als ich "Adauga" klicken, die auf "Hinzufügen", die Gesamt Kcal Textbox bedeutet sollte seinen Wert auf
kcal (Spalte) * (cantitate = Menge) und Pret aktualisieren Total = Total Price aktualisiert seinen Wert auf pret = Preis (Spalte) * (kantit)
und zwar nur für eine Zeile. Lassen Sie mich erklären: Wie Sie oben sehen können, klickte ich den 3. (von oben nach unten) Knopf und es gab 618,10 zurück (Preis ist 10 * 1 Menge) (kcal ist 618 * 1 Menge), aber wenn ich auch den ersten Knopf klicke , sehen They don't add

die Werte nicht zu den vorherigen hinzufügen, und ich weiß nicht, wie dies zu tun ist. Dies ist der Code:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     var senderGrid = (DataGridView)sender; 
     if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0) 
     { 
      var pret = dataGridView1.Rows[e.RowIndex].Cells[3].Value; 
      var kcal = dataGridView1.Rows[e.RowIndex].Cells[4].Value; 
      var qt = dataGridView1.Rows[e.RowIndex].Cells[6].Value; 
      int qty = int.Parse(qt.ToString()); 
      int kca = int.Parse(kcal.ToString()); 
      int pre = int.Parse(pret.ToString()); 
      int kcalTotal = 0, pretTotal = 0; 
      kcalTotal = kcalTotal + (qty * kca); 
      pretTotal = pretTotal + (qty * pre); 
      totalPR.Text = pretTotal.ToString(); 
      totalKC.Text = kcalTotal.ToString(); 
     } 
    } 

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, wollen Sie die Werte der angeklickten Zeilen zusammenzufassen. So nach dem ersten Klick, sollte der Preis TextBox 10 zeigt, nach dem nächsten 23. Wenn das ist, wie Sie Ihre Frage gemeint, man muss nur ein paar Zeilen hinzufügen:

Änderung

int kcalTotal = 0, pretTotal = 0; 

zu

int kcalTotal = 0, pretTotal = 0; 
int.TryParse(totalKC.Text, out kcalTotal); 
int.TryParse(totalPR.Text, out pretTotal); 
+0

Wenn ich dies tun, bekomme ich den Fehler "Eingabe String war nicht in einem korrekten Format." –

+0

Das ist (wahrscheinlich), weil der Standardwert Ihrer Textfelder leer ist. Sie müssen entweder "try-catch" verwenden, den Standardwert der Textfelder auf "0" setzen oder "int.TryParse" verwenden. Ich habe meine Antwort bearbeitet und sie in den int.TryParse-Ansatz geändert. – zockDoc

+0

Es funktioniert, danke. Können Sie mir die "Magie" hinter diesen Codezeilen sagen? Ich bin neu in C# WinForms, lernen jeden Tag :) Btw, Sie haben den TryParse-Ansatz verwendet, aber welche der drei, die Sie erwähnt haben, ist die effektivste? –