c# Taschenrechner mit Radiobuttons

EddyBouns

Grünschnabel
Hallo zusammen,

ich bin auf folgendes Problem gestoßen - ich habe einen Taschenrechner erstellt - welcher mit Radiobuttons zwischen Addieren/Subtrahieren/Multiplizieren/Dividieren wechseln kann..
soweit so gut.. es funktioniert auch alles so wie es soll....

Jedoch wenn jetzt der DAU einfach mal "Sechs" schreibt - bricht das Programm ab - das soll es nicht..
Mir wäre es lieb, wenn eine einfache Fehlermeldung erscheint welche sagt "Bist du blöd - nur Zahlen" oder so :p
Ich gehe davon aus, dass hierbei die Catch-Funktion genutzt werden müsse - gell?

Wie könnte das aussehen?


Mein Code:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Taschenrechner2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnBerechnen_Click(object sender, EventArgs e)
        {
            double zahl1 = double.Parse(tbZahl1.Text);
            double zahl2 = double.Parse(tbZahl2.Text);
            double Ergebnis;

            if(rbAddieren.Checked)
            {
                Ergebnis = zahl1 + zahl2;
                tbErgebnis.Text = Ergebnis.ToString();

            }

            if (rbSubtrahieren.Checked)
            {
                Ergebnis = zahl1 - zahl2;
                tbErgebnis.Text = Ergebnis.ToString();

            }

            if (rbMultiplizieren.Checked)
            {
                Ergebnis = zahl1 * zahl2;
                tbErgebnis.Text = Ergebnis.ToString();

            }

            if (rbDividieren.Checked)
            {
                Ergebnis = zahl1 / zahl2;
                tbErgebnis.Text = Ergebnis.ToString();

  
            }
        }
    }
}

LG!
 
Zuletzt bearbeitet:
Hallo,

ich würde schon das eingeben von Buchstaben in den Textboxen verbieten und nur die Zahlen "durchlassen".
Dafür das Event KeyPress nutzen.
Code:
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }
        }
Hier wird jetzt noch ein Punkt erlaubt, falls du nicht nur Ganzzahlen zulassen willst.
 
Vielen Dank schon einmal!

aus irgendeinem Grund kann ich das Ganze nicht in meinen Code einbinden ohne, dass er Fehler ausspuckt..
Diese Fehler kann ich tatsächlich auch nicht beheben.
Meh..
Vielleicht habe ich mir für mein erstes Projekt zu viel rausgenommen :p
(Fange ja gerade erst an!^^)

Wo und wie packe ich deinen Code hin?

Catch würdest du in diesem Falle gar nicht nutzen?..
 
Zuletzt bearbeitet:
Naja ich persönlich finde es eleganter Exceptions zu vermeiden anstatt den User reinlaufen zu lassen.
So als Idee, geht auch double.TryParse welches dir einen Boolean zurückliefert ob die Eingabe in ein double konvertiert werden konnte.
Code:
....
            double zahl1;
            double zahl2;

            if (!double.TryParse(tbZahl1.Text, out zahl1))
            {
                MessageBox.Show("Zahl1 ist keine Zahl!");
                return;
            }

            if (!double.TryParse(tbZahl2.Text, out zahl1))
            {
                MessageBox.Show("Zahl2 ist keine Zahl!");
                return;
            }

            double Ergebnis;

            if (rbAddieren.Checked)
.....


Exception geht natürlich auch.

Code:
            double zahl1;
            double zahl2;

            try
            {
                zahl1 = double.Parse(tbZahl1.Text);
                zahl2 = double.Parse(tbZahl2.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Falsche Eingabe!");
                return;
            }
            
            double Ergebnis;

.....
 
Zurück