www.mikrocontroller.net

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


Autor: axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
private void button1_Click(object sender, EventArgs e)
        {
            { textBoxGesamt = textBoxStd*3600 + textBoxMin*60 +
textBoxSek; }
        }
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

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johnny (Gast)
Datum:

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

Autor: axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm so klappt es leider nicht. Ich habe deinen Tipp wie folgt
umgesetzt:
        private void button1_Click(object sender, EventArgs e)
        {
            {
                
                
                int Stunden = 0;
                int Minuten = 0;
                int Sekunden = 0;
                Stunden = int.Parse(textBoxStd);
                Minuten = int.Parse(textBoxMin);
                Sekunden = int.Parse(textBoxSek);

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johnny (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.