Forum: PC-Programmierung C# Berechnung aus mehreren Feldern.


von axel (Gast)


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

von Johnny (Gast)


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

von Johnny (Gast)


Lesenswert?

sorry, hier der Fehlerbereinigte Code:
int Sekunden;
Sekunden = int.Parse(textBoxStd.Text) * 3600;

von axel (Gast)


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 ) :-)

von Karl H. (kbuchegg)


Lesenswert?

Wie Johnny schon sagte:

ein TextBoxStd Objekt ist ein TextBox-Objekt.
Du willst aber den Inhalt dieses Objektes, den Text
den es anzeigt bearbeiten. Der steht in der Text
Eigenschaft dieses Objektes:

   TextBoxStd.Text

von Johnny (Gast)


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...

von axel (Gast)


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

von Johnny (Gast)


Lesenswert?

Das "numericUpDown" arbeitet mit int. Vielleicht ist das was für dich?

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.