C# Zahlen aus Listbox via Button zusammenzählen geht das?
Hi :)
Also wir müssen für die Schule so ein komisches Programm schreiben mit dem man sich errechnen kann wie viel z.B. das Menü bei McDonalds kostet so ich bin in zwischen so weit das ich das habe: Man kann Buttons anklicken und dadurch wird ein Zahlenwert in eine ListBox eingefügt. Wobei ich einfach eingegeben habe das er z.B. wenn ich den "Button1" Drücke soll er den Wert "2.50" in die Listbox einfügen und ich bin und war mir nicht sicher ob ich einen "." oder ein "," nehmen soll. Ich möchte einfach auf den Button "Berechnen" klicken und es rechnet mir den Wert aus der in einem label steht (label1)
Mein Problem ist allerdings das ich diese Zahlen einfach nicht zusammenrechnen kann. Ich weiß nicht wie und habe keine Ahnung weil unser Lehrer sagt immer "Google hilft immer" im ernst!
Da ich in Google nichts gefunden habe was mir helfen könnte frage ich jetzt mal hier :) Wäre sehr froh wenn mir jemand helfen könnte :)
1 Antwort
Ich kann dir leider nur in VB.Net eine 100%ige Lösung schreiben.
Es gibt aber Online VB.Net -> C#-Converter, die C#-Codes die ich gleich poste sind dann halt von dem Onlineconverter sollten aber genauso funktionieren :)
Du musst komma benutzen anstelle von Punkten.
VB.Net
Dim summe As Double = 0.0
For Each item As Object In ListBox1.Items
summe += item
Next
'Die Ausgabe liegt jetzt in der Variable
C#
double summe = 0.0;
foreach (object item in ListBox1.Items) {
summe += item;
}
//Die Ausgabe liegt jetzt in der Variable
Sorry, wusste nicht dass C# das nicht kann.
Habe es eben durchgetestet, du musst die Zeile durch folgende ersetzen:
summe += Convert.ToDouble(item);
MFG xGlumi
Das Problem ist hier in VB und C# dasselbe: ListBox.Item ist eine Auflistung von Elementen vom Typ Object; die ListBox zeigt das Ergebnis der ToString-Funktion dieser Objekte an.
Ich würde als Wert zum Einfügen die Zahl nehmen, kein String. (Typ Double oder Decimal - für Preise empfiehlt Microsoft Decimal, aber wenn ihr in der Schule Double nehmt, nimm das). Die Darstellung mit dem Komma macht die ToString-Funktion automatisch, wenn das in den Systemeinstellungen so eingetragen ist.
Dann kannst du
summe += (double)item;
verwenden. Die Typumwandlung kann nicht fehlschlagen, da als item ja ein Wert vom Typ double eingetragen worden ist.
Du brauchst zwar keine Antwort, aber du bekommst denoch eine.
Wenn du Leuten helfen möchtest, dann bitte mit korrektem Code (und bitte ohne Erklärung die ein Falsches Vorgehen rechtfertigt)
Hab extra nochmal VisualStudio aufgemacht, um dir eben den Fehler zu copy/pasten, der bei deiner Variante kommen wird.
Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in SandboxC.exe aufgetreten.
Zusätzliche Informationen:
Die angegebene Umwandlung ist ungültig.
MFG xGlumi
Das passiert jedoch nur bei
summe += (double)item;
bei
summe += Convert.ToDouble(item);
zumindest bei mir nicht
Wobei es eigentlich bei beiden funktionieren sollte keine Ahnung warum nur bei einem es erscheint mir recht unlogisch
OK ich entschuldige mich schon mal für die Frage aber wie gesagt bin neuling im Thema:
Ich bekom den Error "Der +=Operator kann nicht auf Operanden von Typ "double" und "object" angewendet werden"
Interpretiere ich das richtig das double und object so nicht genutzt werden können?