Entwickler-Ecke

WinForms - Übernahme von Zahlen aus einer Textbox


Izze - Fr 06.02.09 12:11
Titel: Übernahme von Zahlen aus einer Textbox
Hallo,

erstmal, ich bin ganz neu hier und habe direkt eine Frage.

Ich bin blutiger Anfänger und im Moment irgendwie betriebsblind.
Habe auch beim Suchen nichts gefunden und in meinen Büchern verstehe ich es nicht ganz.

Zur Zeit bastele ich an einem Weight Watchers Punkterechner für meine Frau.
Soweit so gut. Es gelingt mir aber nicht die Zahlenwerte aus den Textboxen zu übernehmen und berechnen zu lassen.

Folgender Code liegt zugrunde:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        private void buttonBerechnen100G_Click(object sender, EventArgs e)
        {
            //Textboxen 100 auslesen
            string Kcal100 = textBoxKcal100.Text;
            string Fett100 = textBoxFett100.Text;
            string Portionsgroesse100 = textBoxPortionsgroesse100.Text;

            //Textboxinhalt in Zahlen umwandeln
            int a,c;            
            double b;

            a = Convert.ToInt32(Kcal100);               //Ganzzahl
            b = Convert.ToDouble(Fett100);              //Kommazahl
            c = Convert.ToInt32(Portionsgroesse100);    //Ganzzahl

            //Punkte berechnen und Ergebnis ausgeben ::: Formel für Points = Fett*0,11 + kcal*0,0165
            textBoxPunkte100.Text = ((b * 0.11) + (a * 0.0165)) * c;            
        }


Und die Fehlermeldung dazu ist: Eine implizite Konvertierung vom Typ "double" in "string" ist nicht möglich.

Ich vermute, es hat wohl etwas damit zu tun das ich den Inhalt der Textbox in Zahlenwerte konvertieren muss.
Aber daran scheitert es wohl, sorry.

Danke schonmal für die Hilfe!


bakachan - Fr 06.02.09 12:17

Die Fehlermeldung sagt doch eigentlich alles:
dein double-wert (((b * 0.11) + (a * 0.0165)) * c) kann nicht implizit in string gewandelt werden also musst du das ganze explizit machen:
.ToString()


Izze - Fr 06.02.09 12:26

Danke für die flotte Antwort.


C#-Quelltext
1:
textBoxPunkte100.Text = (((b * 0.11) + (a * 0.0165)) * c).ToString();                    


Scheint geklappt zu haben.
Fehlt nur die Kommasetzung.


JüTho - Fr 06.02.09 13:01

user profile iconIzze hat folgendes geschrieben Zum zitierten Posting springen:
Fehlt nur die Kommasetzung.

Für diese und viele weitere Fragen gibt es die ausführliche SDK-Doku/MSDN mit vielen Hinweisen und Beispielen. Bei Double.ToString gibt es vier Varianten (Überladungen), davon drei mit Vorgabe des Formats.

Übrigens sind die Convert-Methoden oft nicht so günstig (ich sage sogar "meistens", aber das ist Ansichtssache). Was passiert, wenn zwei Kommata oder ein Buchstabe eingegeben werden? Benutze lieber Parse, ParseExact oder noch besser TryParse, TryParseExact - Erläuterungen auch dazu siehe SDK-Doku/MSDN. Alternativ kannst Du auch MaskedTextBox oder NumericUpDown verwenden.

Gruß Jürgen

PS. Beschränke künftig Deinen Code-Auszug bitte auf die relevanten Teile. Die ganzen leeren EventHandler, die für Deine künftige Planung vorbereitet sind, sind für das aktuelle Problem überflüssig. Danke!


Izze - Fr 06.02.09 13:14

Danke für die Hinweise!

Ich habs oben auch geändert. ;-)