Eingabe von Bucstaben nicht annehmen
-
Also ich habe so eine Art Zahlenratespiel geschrieben. Das funktioniert alles nur wenn ich einen Buchstaben eingebe dann stürzt das Program einfach ab.(Ohne Fehlermeldung).
Und nun würde ich gerne wissen wie ich das beheben kann.
Hier der Quellcode:public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string Versuch; Versuch = textBox1.Text; if (Versuch.Equals("")) { button2.Show(); button2.Text = "Nur Zahlen eingeben"; } else { int eingabe = Convert.ToInt32(Versuch); int echt = Convert.ToInt32(label1.Text); if (eingabe >= 'A') button2.Show(); button2.Text = "Nur Zahlen eingeben"; if (eingabe.Equals((echt))) { label2.Visible = true; MessageBox.Show("Du hast gewonnen. Ein neues Spiel beginnt"); button2.Visible = true; button2.Text = "Neustarten?"; textBox1.Text = ""; } if (eingabe > echt) { label2.Text = "Noch kleiner"; } if (eingabe < echt) { label2.Text = "Die Zahl ist größer"; // da gehts noch weiter aber ich denke das ist unwichtig^^
-
Das Programm wird Dir eine Exception werfen, die Dir den Hinweis gibt.
int eingabe = Convert.ToInt32(Versuch);
ToInt32 wirft z.B. eine wenn Versuch nicht in eine Zahl gewandelt werden kann.
-
Abgesehen dass mein Program nicht gerade handlich ist habe ich den Fehler gefunden^^
Exception(Danke^^)
Habe es nun so gelösttry { // Mein Code vom Anfang } catch (Exception b) { button2.Show(); button2.Text = "Nur Zahlen erlaubt"; }
-
Ein TryParse wäre schöner gewesen
-
Knuddlbaer schrieb:
Ein TryParse wäre schöner gewesen
Ist aber so auch Ok
-
Das catch bezieht sich auf alles was im Block passieren kann. Das TryParse nur auf die Umwandlung.
-
SturmXXS schrieb:
Knuddlbaer schrieb:
Ein TryParse wäre schöner gewesen
Ist aber so auch Ok
Nein, ist es nichz, gehört zu den Anti-Patterns: http://en.wikipedia.org/wiki/Expection_handling
TryParse ist die sauberere lösung mit weniger Seiteneffekten.
Besser noch wäre es im PreviewKey-Event der Textbox direkt zu filtern so das die Textbox Zeichen gar nciht erst annimmt. (Also den Fehler gar nicht erst aufkommen lassen)
-
Ja stimmt, hatte ich mit der Glühbirne verwechselt...lol
-
O.o
Jetzt habt ihr mich verwirrt.
So passt das ganze doch oder??
-
Trios schrieb:
O.o
Jetzt habt ihr mich verwirrt.
So passt das ganze doch oder??Man verwendet Exceptions nicht, um zu erwartende Zustände zu behandeln.
-
ok.
Mir ist dann aber nichts anderes eingefallen um das zu Lösen.
Aber das Programm funktioniert jetzt
-
Trios schrieb:
Mir ist dann aber nichts anderes eingefallen um das zu Lösen.
Das Lesen der anderen Beiträge hätte auch gereicht, da steht "was anderes" drin