Berechnen Sie die Summe einer Spalte in einem datagridview in c#
Ich ein Programm erstellt, das berechnet die Summe einer Spalte in einem datagridview, das problem entsteht, wenn ich die Umgestaltung der Logik aus dem click-handler in eine separate Methode. Die calcSum
Methode nicht scheinen, um mir die richtige Ausgabe im Vergleich mit button2_Click
die gesamte Logik, die direkt in den click-handler.
Kann mir jemand bitte erklären, was ist falsch an meinem code?
//Calls sum of column method, "incorrect" output
private void button1_Click(object sender, EventArgs e){
calcSum(a,b,3);
}
private double calcSum(double a, double b, int c){
foreach(DataGridViewRow r in dataGridView1.Rows){
a = Convert.ToDouble(r.Cells[c].Value);
b = b + a;
}
MessageBox.Show("sum is " = b.ToString());
return b;
}
//shows correct/calculates output
private void button2_Click(object sender, EventArgs e){
double a =0,b=0;
foreach (DataGridViewRow r in dataGridView1.Rows){
a = Convert.ToDouble(r.Cells[3].Value);
b = b + a;
}
MessageBox.Show(b.ToString());
}
- Wo sind die Werte a und b deklariert oder initialisiert? Warum sind Sie übergeben Sie Ihre calcSum Methode?
- Editierte, um zu versuchen und machen das dilemma klarer.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihre Methode, die Sie aufrufen, die Zeile "Zeile" innerhalb der Schleife, sondern erklären es als r in der foreach.
Ich würde empfehlen, vereinfachen Sie Ihren code aber. Haben Sie einen Blick auf die Antwort hier: wie ich zeigen kann, die Summe der in einem datagridview-Spalte?
Ich glaube nicht, müssen Sie die a & b-Variablen, um auf deine Antwort und vielleicht sind Sie initialisieren Sie anders im 1. Beispiel, wenn Sie auf der Durchreise sind, Sie in die Methode ein.
Es sieht aus wie Sie sind, indem Sie Ihre Parameter a und b werden deklariert anderswo. Wenn b einen anderen Wert dann auf null, wenn Sie auf die Schaltfläche, es wird Hinzugefügt werden, um die Ergebnisse. Versuchen Sie dies:
Sollten Sie Lesen über Out-Parameter
Erster Gedanke, wie es aussieht, a und b sind Globale Variablen, sollten Sie diese zurücksetzen auf null