2017-06-11 4 views
0

Ich versuche, den Gesamtpreis der Elemente nach dem Hinzufügen von ihnen zu einem Kombinationsfeld aus einer Listbox zu berechnen. In der Listbox habe ich sowohl die Art des Artikels als auch den Preis. Ich möchte den Gesamtpreis erhöhen, wenn ich jedes Element (klicken Sie auf AddButton) zum Kombinationsfeld hinzufügen. Aber was ich sehe, ist, dass der Artikel zum Kombinationsfeld hinzugefügt wird, aber ich sehe nur einzelne Artikelpreise anstelle der Summe der Preise. Hier ist ein Beispiel meines Codes.So verwenden Sie die Schleife, um Elemente zu summieren

private void addButton_Click(object sender, EventArgs e) 
{ 
    decimal price;  // variables to holds the price 

    decimal total = 0; // variables to hold the total 
    int counter; 

    for (counter=0; counter <= 5; counter++) 
    {  
     price = decimal.Parse(priceLabel2.Text); 
     // add items price 
     total += price; 

     // display the total amount 
     costLabel.Text = total.ToString("c"); 
    } 

Jede Hilfe würde geschätzt,

+0

Wenn Sie 4 Elemente hinzufügen, wird die Summe angezeigt (derzeit) nur die letzte hinzugefügt? – mjwills

+0

ja es zeigt nur die letzte. –

+1

Es wäre viel einfacher zu helfen, wenn Sie Code, der relevant für die Beschreibung ist, die Sie eingeben. Sie erklären über ein Listenfeld und ein Kombinationsfeld und dann schreiben Sie Code, der sich mit einigen Beschriftungen beschäftigt. Bitte korrigieren Sie die Einrückung. –

Antwort

4

Wechsel:

private void addButton_Click(object sender, EventArgs e) 
    { 
     decimal price;  // variables to holds the price 

     decimal total = 0; // variables to hold the total 
     int counter; 

      for (counter=0; counter <= 5; counter++) 
      { 

      price = decimal.Parse(priceLabel2.Text); 
      // add items price 
      total += price; 

      // display the total amount 
      costLabel.Text = total.ToString("c"); 
      } 

zu:

decimal total = 0; // variables to hold the total 

    private void addButton_Click(object sender, EventArgs e) 
    { 
     decimal price; // variables to holds the price 

     int counter; 

     for (counter = 0; counter <= 5; counter++) 
     { 
      price = decimal.Parse(priceLabel2.Text); 
      // add items price 
      total += price; 

      // display the total amount 
      costLabel.Text = total.ToString("c"); 
     } 
    } 

Die wichtige Veränderung hier bewegt sich die gesamte variable außerhalb die Funktion. Dies bedeutet, dass der Wert zwischen den Klicks beibehalten wird. Wenn Sie es in die Funktion einfügen, wird es bei jedem Klick auf 0 zurückgesetzt (was Sie nicht wollten).

+5

Ich habe nicht abgestimmt auf Ihre Frage, aber Sie hätten folgendes tun können: (1) Fixieren Sie die Einrückung, (2) erklären Sie, warum das Verschieben der Variablen 'total' außerhalb der Funktion das Problem löst. Ich glaube, das hat dich runter gebracht. Außerdem gibt es einen anderen Weg: Holen Sie den aktuellen Gesamtwert aus dem 'costLabel' am Anfang der Funktion, so dass Sie keine externe Variable haben. – Rafalon

+0

Sie haben nichts erklärt. Du hast gerade eine korrekte Version eingefügt ... – FCin

+0

Tolles Feedback - Danke @Rafalon und FCin. Ich habe einige Änderungen aufgrund Ihrer Kommentare vorgenommen. Danke noch einmal! – mjwills

Verwandte Themen