Datum:
Hallo, Anwender soll eine Zahl mit einem Komma eingeben. Wenn er versehentlich zwei Kommas eingibt, dann kommt es zum Fehler in Compiler.Und zwar wenn String in float float vOut = Convert.ToSingle(vIn); umgewandelt wird. Wie kann man es in C# verhindern? Es soll nur ein Komma zugelassen werden.
Datum:
Die Frage ist ob du mit WinForms oder WPF arbeitest? Eine Möglichkeit wäre es die Eingabe zu überprüfen, bevor sie in ein float umgewandelt wird. Im Fall von WinForms könnte dir eine MaskedTextBox helfen: http://msdn.microsoft.com/en-us/library/system.win... Für MaskedTextBox in WPF kannst du hier fündig werden: http://stackoverflow.com/questions/481059/where-ca... MfG, John
Datum:
Mach ein Keydown Event, in dem jeweils geprüft wird, ob der String in der Textbox schon ein Komma beinhaltet. Wenn ja, dann soll das gefressen werden. Weiß den Befehl under C# grad nicht, aber ich denke mal wie in Java mit Consume?
Datum:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (textBox1.Text.Contains(',') && e.KeyChar == ',')
e.Handled = true;
}
|
Datum:
KeyPress ist lückenhaft, denn entweder müsstest du Ctrl+V ebenfalls abfangen, wofür du verflucht werden wirst, oder man kann durch Pasten trotzdem etwas einfügen, was sich nicht in ein Float konvertieren lässt. Wäre also nur zusätzlich zur Prüfung beim Bestätigen des Dialogs sinnvoll. Das wiederum geht am einfachsten, wenn du ein try/catch um die Wandlung schreibst und einfach eine sinnvolle Fehlermeldung ausgibst.
Datum:
Hallo! Also wir haben das damals in der Schule immer mit dem Validating-Event gemacht. Vielleicht ist das ja intressant fuer dich.. lg
Datum:
der mechatroniker schrieb: > Das wiederum geht am einfachsten, wenn du ein try/catch um die > Wandlung schreibst und einfach eine sinnvolle Fehlermeldung ausgibst. Am einfachsten ist float.TryParse OHNE Exception-Handler. Gruß Markus