C# Textbox geht nur mit Nummern?

4 Antworten

Wo kommt der Fehler? In welcher Programmzeile?

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer

Kimimaru 
Fragesteller
 02.09.2019, 22:46

Sorry aber verstehe nicht was du meinst mit Programmzeile?

Der Fehler ist dieser: https://gyazo.com/a2cf29401522b5ac572c31ffc67c025a

0
DonkeyShot  02.09.2019, 22:55
@Kimimaru

Exceptions treten bei der Ausführung von Code auf. Danach hatte ich gefragt. Ist das Programm denn nicht unterbrochen durch das Auftreten der Exception? Wenn du auf "Details anzeigen" gehst, wird kein Callstack (aka Aufrufliste) angezeigt?

0
DonkeyShot  02.09.2019, 23:54
@Kimimaru

Das hilft nicht wirklich weiter. Du musst auf das + Klicken und u.a. die Aufrufliste anzeigen lassen.

Im ersten Fenster gabs außerdem den Punkt "Details kopieren". Hier eingefügt könnte das weiterhelfen.

0
Kimimaru 
Fragesteller
 03.09.2019, 12:02
@DonkeyShot

System.FormatException

 HResult=0x80131537

 Nachricht = Die Eingabezeichenfolge hat das falsche Format.

 Quelle = mscorlib

 Stapelüberwachung:

  bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) in f:\dd\ndp\clr\src\BCL\system\number.cs: Zeile1035

  bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) in f:\dd\ndp\clr\src\BCL\system\number.cs: Zeile704

  bei System.Int32.Parse(String s) in f:\dd\ndp\clr\src\BCL\system\int32.cs: Zeile120

  bei TextFileCreator.Form1.btnCreate_Click(Object sender, EventArgs e) in C:\Users\mir\source\repos\TextFileCreator\TextFileCreator\Form1.cs: Zeile25

  bei System.Windows.Forms.Control.OnClick(EventArgs e)

  bei System.Windows.Forms.Button.OnClick(EventArgs e)

  bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

  bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

  bei System.Windows.Forms.Control.WndProc(Message& m)

  bei System.Windows.Forms.ButtonBase.WndProc(Message& m)

  bei System.Windows.Forms.Button.WndProc(Message& m)

  bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

  bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

  bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

  bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)

  bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

  bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

  bei System.Windows.Forms.Application.Run(Form mainForm)

  bei TextFileCreator.Program.Main() in C:\Users\mir\source\repos\TextFileCreator\TextFileCreator\Program.cs: Zeile19

0
DonkeyShot  03.09.2019, 13:50
@Kimimaru

DAS hilft weiter. Also in Zeile 25 deiner Form1.cs tritt der Fehler auf. Was steht denn da? Bitte die Zeile posten. Du wandelst dort einen String in einen Integer-Wert um. Das geht natürlich nur, wenn der String auch als Integer interpretierbar ist. Verwende Int32.TryParse für die Konvertierung. Der Funktionswert liefert False, wenn der Wert nicht konvertierbar ist.

https://docs.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=netframework-4.8

Wenn das aber doch ein Laufzeitfehler ist (und nicht etwa im Forms-Designer auftritt), warum unterbrichst du denn nicht beim Auftreten des Fehlers die Ausführung und debuggst das Programm? Der Debugger steht ja dann auf der Fehlerzeile.

0
DonkeyShot  03.09.2019, 15:09
@Kimimaru

Ok. Ist jetzt alles geklärt? Mehr kann ich dem nicht hinzufügen als ich schon schrieb.

0
Kimimaru 
Fragesteller
 03.09.2019, 15:11
@DonkeyShot

wenn ich Int32.Tryparse mache geht es nicht ...

0
DonkeyShot  03.09.2019, 15:27
@Kimimaru

Warum geht es nicht? Kommt ein Fehler? Wenn ja, welcher? Oder verhält es sich nicht wie gewünscht?

0
(...) ich denke es ist zwar nicht die Richtige Seite zu fragen (...)

Das einzige Problem ist hier eher die Fülle an Informationen, die du zu deinem Problem teilst. Es haben dich bereits zwei Personen nach konkreteren Informationen gefragt:

  • Programmcode / Fehlerzeile
  • Wie hast du die TextBox hinzugefügt?

doch deine Antworten daraufhin sind mangelhaft. So lässt sich dir nicht helfen.

Eine FormatException wird bei der Eingabe von Zeichen in eine Textbox nicht einfach so geworfen. Wenn ich mir ein neues Windows Forms-Projekt anlege, in die Form eine Textbox hineinziehe und das Programm starte, kann ich in diese jeglichen Kram hineinschreiben und es wird nichts passieren. Der Grund liegt darin, dass an die Komponente auch kein Event gebunden ist, welches auf die Eingabe reagieren würde.

Du solltest zunächst genau prüfen, was du in deinem Projekt bisher gemacht hast. Wenn du dir unsicher bist, lösche es und mache es neu.

Der Dialog, der die Exception aufführt offenbart des Weiteren noch mehr Informationen. Der Eintrag lässt sich weiter ausklappen. Dort gibt es bspw. Felder, wie den Stacktrace. Kopiere dir dessen Wert in eine Textdatei und schau ihn dir genauer an. In ihm wird die Aufruferkette gelistet, die Aufschluss darüber gibt, in welcher Methode der unbehandelte Ausnahmefall eingetreten und in welchem Verlauf sie während der Laufzeit aufgerufen wurde.

Sollte im Übrigen Windows Forms deine ersten Krabbelversuche mit C# darstellen, würde ich dir eher dazu raten, eine Anforderungsebene tiefer (mit der Konsole) zu beginnen. Zur Orientierung: Für die Anwendung von Windows Forms wird Wissen über die OOP bereits vorausgesetzt.

Was ist es denn für ein Projekt? (WinForms?)

Wie hast du die TextBox hinzugefügt?

Wie sieht der Code aus?


Kimimaru 
Fragesteller
 02.09.2019, 22:45

1.) Windows Forms-App

2.) Ja.

3.) bis jetzt hab ich beim TextBox noch nichts gecoded nur beim Button_Click

zu dem TextBox brauche ich für das was ich Programmieren will nichts zu schreiben da es in einem Satz vor kommen soll was man im TextBox schreibt welches ich schon habe nur verstehe ich nicht wenn ich beim TextBox Buchstaben oder Zeichen wie ! - , . / etc. schreibe Bekomme ich dieses Fehler

https://gyazo.com/a2cf29401522b5ac572c31ffc67c025a

Danke im Vorraus für die Hilfe!

0

In deinem eigenen Programmcode versuchst du scheinbar, an irgendeiner Stelle, den Inhalt der Textbox per "Int32.Parse()" zu konvertieren.....

Dass das eine Exception schmeißt, sollte die zu konvertierende Zeichenfolge keine Zahl sein, sollte wohl jedem klar sein...

Merke:

Entweder nutze TryParse() oder setz dein Parse() in einen entsprechenden Try-Catch

MFG xGlumi

Woher ich das weiß:eigene Erfahrung

Kimimaru 
Fragesteller
 03.09.2019, 14:57

das ist der Code https://gyazo.com/e06905666e2fee5dfb55623e96ae4c35 es soll eine .txt datei erstellen mit den sachen in einem Text die ich in die Textbox schreibe.

0
xGlumi  03.09.2019, 16:08
@Kimimaru

Meine Antwort ist bereits korrekt.

mit den Zeilen:

int blablabla = int.Parse(txtBlabla.Text);

zwingst du dein Programm dazu den Inhalt von txtBlabla in eine Zahl zu konvertieren was natürlich, wenn in txtBlabla keine Zahlen drin stehen, zu einem Absturz des Programms führt.

Zwei (von mehreren Möglichkeiten) habe ich dir ja schon oben in meiner Antwort beschrieben

MFG xGlumi

0