Numerische TextBox - Double.TryParse

Ich weiß, das ist eine uralte Frage mit vielen Antworten, aber ich habe nicht gefunden eine gute, robuste Antworten.

Voraussetzung ist eine textbox, wird immer eine Zeichenfolge enthalten, die Doppel.TryParse wird true zurückgegeben.

Meisten Implementierungen, die ich gesehen habe nicht Schutz gegen Eingabe wie: "10.45.8". Das ist ein problem.

Die bevorzugte Art und Weise, dies zu tun, ist durchaus mit Veranstaltungen wie TextInput und KeyDown (für Leerzeichen). Das problem mit diesen ist, dass es ziemlich kompliziert, um ein string, der den neuen Text ein, bevor es geändert wird (oder der alte Text, nachdem es geändert wird). Das problem mit TextChanged ist, dass es nicht bieten einen Weg, um den alten Text.

Wenn Sie könnte irgendwie bekommt der neue Text, bevor Sie es verpasst, wäre das sehr hilfreich, da könnte man es testen gegen Verdoppeln.TryParse. Möglicherweise gibt es eine bessere Lösung, obwohl.

Was ist der beste Weg, dies zu tun?

Die beste Antwort auf diese Frage ist eine, die hat mehrere Ansätze und vergleicht diese.

immer ist ein starkes Wort.
Was macht Sie sagen, dass? Ist das nicht einfach genug Bedarf?
was soll passieren, wenn der Benutzer eine ungültige char dann lässt die textbox?
Wenn Sie geben Sie eine ungültige char, sollte es nichts zu tun, wie Sie nicht drücken Sie die Taste.
Ich würde versuchen, dass die Anforderung abgeworfen für usability-Gründen - siehe meine Antwort.

InformationsquelleAutor Kendall Frey | 2012-02-03

Schreibe einen Kommentar