Taschenrechnerprogramm Visualisierung



  • Dazu gibt es die Methoden 'Parse' bzw. 'TryParse' für den jeweiligen Datentyp, z.B. Int32 oder Double.

    string text = "42";
    
    int x1 = Int32.Parse(text); // liefert aber eine Exception bei fehlerhafter Umwandlung (falls keine Zahl vorhanden)
    
    //bzw.
    int x2;
    if(Int32.TryParse(text, out x2))
    {
      // Wert steht in x2
    }
    else
    {
      // Fehler bei Umwandlung
    }
    

    Und bzgl. Exceptions schau dir mal die Schlüsselwörzter 'try' und 'catch' in der Hilfe an.

    Und die umgekehrte Umwandlung (Zahl -> String) ist auch ganz einfach:

    int zahl = 42;
    string text = zahl.ToString();
    

    (das sollte aber in jedem Buch stehen -)

    P.S: Sehe gerade, daß du ja auch im Konsolenprogramm schon "Convert.ToInt32" benutzt hast (aber anscheinend nicht verstanden). Diese Methode sollte jedoch nicht benutzt werden, sondern statt dessen eben "Parse" bzw. noch besser "TryParse".



  • eben das im konsolenprogramm benutzte convert.toint funktionierte in der applikation nicht.

    ich werde deine variante sofort probieren 🙂

    ein wenig später:
    und es funktioniert. danke für die hilfe.

    kann mir jetzt noch jemand sagen, wie ich ein textfeld einer textbox wieder loeschen kann?
    ich versuchte es mit textBox1.clear(); jedoch brachte das nicht den erwuenschten effekt.



  • Textbox.Text = "";
    :p



  • Das hatte ich probiert.
    da ich den eingelesenen wert ja in einen double umgewandelt habe, bringt er mir bei dem versuch den Text auf "" zu setzen einen laufzeitfehler mit der nachricht "Die Eingabezeichenfolge hat das falsche Format."
    Überschrift ist "Format Exception wurde nicht behandelt"

    was kann man dagegen tun?



  • Nein beim setzen des TExtbox Textes sollte da eigentlich kein Laufzeitfehler kommen NUR beim wieder auslesen in einen double oder so.Zeig doch mal den Codeausschnitt bitte her.



  • Das ist das Einlesen der Eingabe:

    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                stra = textBox1.Text;
                a = Double.Parse(stra);
    
            }
    

    löschen der textbox sollte sein:

    private void clear_Click(object sender, EventArgs e)
            {
                textBox1.Text = "";
    
            }
    

    doch da bekomme ich den oben genannten fehler und das programm hängt sich auf.



  • Dann lies dir noch mal meinen Beitrag "genau" durch!

    Und TextChanged ist ein ungünstiges Ereignis, um die Konvertierung (String->Zahl) durchzuführen, da dieses bei jeder Änderung aufgerufen wird.

    Mach dies erst beim Button-Click...

    P.S. "das programm hängt sich auf. " -> nein, sondern es zeigt eine "Exception" (Stichwort!) an!



  • Okay danke für die Hilfe.
    Wenn ich die Umwandlung erst beim Button Click auf die jeweilige rechenoperation mache klappt das 🙂
    danke.



  • zudem sei auf dem TryParse aufmerksam gemacht (wie es hier schon wurde)

    private void Calc()
    {
        double number = 0;
        if (double.TryParse(textBox1.Text, out number))
            Calc(number);
        else
        {
            MessageBox.Show("Bitte nur zahlen eingeben");
            textBox1.Text = "";
        }
    }
    

    // tags vergessen



  • Ich versuche gerade dem Taschenrechnerprogramm noch einen kleinen Währungsrechner hinzuzufügen.

    da arbeite ich mit comboboxen.
    durch if/else wollte ich abfragen, welcher Index in der ComboBox gewählt wurde.

    wie wird der index vergeben?
    ich habe drei zeilen in die auflistung gebracht.
    welchen index haben die jeweiligen zeilen?

    danke im voraus
    mfg simon



  • von 0 aufseigend - wie bei einem normalen array
    steht aber auch in der msdn {o;



  • Oder einfach mal selber ausprobieren und den aktuell ausgewählten index ausgeben.

    🙄 🙄


Anmelden zum Antworten