Ich musste gerade eine Funktion schreiben, die die Eingabe in ein Textfeld auf gültige Dezimalwerte beschränkt, und ich kam auf Folgendes:
Private Sub validateDecimalTextBox(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) handles myTextBox.keyPress
Dim textBox As TextBox = DirectCast(sender, TextBox)
If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "." And textBox.Text.IndexOf(".") < 0) Or (e.KeyChar = "-" And textBox.Text.Length = 0)) Then
e.Handled = True
End If
End Sub
Dies sollte die Benutzereingabe auf dezimale Werte beschränken und auch negative Werte zulassen.
Wenn Sie die Benutzereingaben einschränken, können Sie beim Abrufen des Wertes aus dem Textfeld sicherer sein, dass er gültig ist.
Diese Lösung ist jedoch nicht vollständig, da sie es einem Benutzer erlauben würde, einfach "-" in das Textfeld einzugeben, was (vermutlich) keine gültige Eingabe für Sie wäre. Daher können Sie die Lösungen verwenden, die andere erwähnt haben, und eine der folgenden Möglichkeiten auf sinnvolle Weise nutzen.
double.parse,
double.tryparse
isNumeric()
Meine persönliche Präferenz wäre für isNumeric(), aber die Wahl ist wirklich bis zu Ihnen.