C# Berechnung aus mehreren Feldern.

Gast #384972
Lesenswert?

Hallo. Ich versuhe mich grad an meinem ersten C# programm.
Nun wollte ich einmal eure Hilfe in anspruch nehmen.

Ich habe ein Formular mit 3 textBox Feldern. eins für stunden, eins für
minuten und eins für Sekunden.

Dadrunter habe ich mir ein readonly textbox - Feld erzeugt in dem dann
die summe der stunden minuten und sekunden als Sekunden ausgegeben
werden soll.
Meine Berechnung funktioniert aber nicht.
Ich habe bei betätigung des Buttons "buttonBerechnen" folgende
Funktion eingegeben:
1
private void button1_Click(object sender, EventArgs e)
2
        {
3
            { textBoxGesamt = textBoxStd*3600 + textBoxMin*60 +
4
textBoxSek; }
5
        }
wenn ich hinter textboxgesamt das .text packe funktioniert es ja nicht,
da ich mit integern rechnen möchte. Aber wie sag ich ihm das?

Danke
Gast #384973
Lesenswert?

Hallo

Also textBoxGesamt, textBoxStd und textBoxMin sind nur die eigentlichen
Textbox-Objekte.
Wenn Du auf den Textinhalt der Textboxen zugreifen möchtest, dann
kannst Du das folgendermassen machen: textBoxStd.Text

Um mit den Texten rechnen zu können, sind diese erst in eine Zahl
umzuwandeln. Glücklicherweise geht das recht einfach, da ein Integer
Objekt schon von sich auch Texte parsen kann. Das sieht dann
folgendermassen aus:

int Stunden;
Stunden = int.Parse(textBoxStd);

Geht natürlich auch direkt mit rechnen:
int Sekunden;
Sekunden = int.Parse(textBoxStd) * 3600;

Ich würde nicht zu viel Code in eine Zeile packen, da sich damit die
Fehlersuche schwieriger gestaltet.

So nun sollte Dein erstes Programm eigentlich gelingen...  :-)

Gruss
Johnny
Gast #384975
Lesenswert?

Hmm so klappt es leider nicht. Ich habe deinen Tipp wie folgt
umgesetzt:
1
        private void button1_Click(object sender, EventArgs e)
2
        {
3
            {
4
                
5
                
6
                int Stunden = 0;
7
                int Minuten = 0;
8
                int Sekunden = 0;
9
                Stunden = int.Parse(textBoxStd);
10
                Minuten = int.Parse(textBoxMin);
11
                Sekunden = int.Parse(textBoxSek);
12

13
                textBoxGesamt = Stunden + Minuten + Sekunden; }
Allerdings kommt jeweils für Sekunden, Minuten und Stunden folgende
Fehlermeldung

Fehler  1  Die beste Übereinstimmung für die überladene
int.Parse(string)-Methode hat einige ungültige Argumente.

und

Fehler  2  1-Argument: kann nicht von "System.Windows.Forms.TextBox" in
"string" konvertiert werden.

für die Gesamtberechnung bekomme ich dann auch noch das
Fehler  7  Eine implizite Konvertierung vom Typ "int" in
"System.Windows.Forms.TextBox" ist nicht möglich.


Was hab ich denn da falsch gemacht?

Danke dir (oder euch ) :-)
Gast #384977
Lesenswert?

Ja genau, sorry Axel, hab das Beispiel ein wenig zu schnell reingehackt
;-) Scheinbar hast Du mein zweites Posting nicht gesehen.
So müsste es ungefähr klappen:

int Stunden;
int Minuten;
int Sekunden;
int Resultat;

Stunden = int.Parse(textBoxStd.Text);
Minuten = int.Parse(textBoxMin.Text);
Sekunden = int.Parse(textBoxSek.Text);

Resultat = (Stunden * 3600) + (Minuten * 60) + Sekunden;

textBoxGesamt.Text = Resultat.ToString();  // Resultat in String
wandeln

Es ginge auch mit weniger schreiben / weniger code, der Übersicht
halber und um die einzelnen Schritte zu erkennen, hab ich mich für eine
ausführliche Variante entschlossen...
Gast #384978
Lesenswert?

Danke euch erstmal. Ich werds dann mal ausprobieren. Aber eine Frage
habe ich noch. Gibt es ein element dem ich von beginn an sagen kann das
der Input ein int ist? BEi c++ z.B. konnte ich das doch auch mit cin gut
lösen...

Axel
#384980
Lesenswert?

> BEi c++ z.B. konnte ich das doch auch mit cin gut
> lösen...

Das bezweifle ich.

Fakt ist: Wenn du professionell Software fertigst, dann
gibt es nur eine einzige Methode: Du laesst grundsaetzlich
alles in einen String eingeben und checkst dann im Programm
ob die Eingabe den Erfordernissen (zb: ist eine Zahl?) genügt.
Alles andere artet auf die eine oder andere Art und Weise
(wenn man es richtig macht) in Unmengen von Code aus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren