In meiner KeyDown
EventHandler
muss ich wissen, was die KeyCode
für "," und ".".
Ich kann sie nicht finden, darum frage ich. Vielen Dank!
Ein Schlüssel und ein Zeichen sind nicht dasselbe. Das Tastaturlayout transformiert zwischen ihnen, und diese Transformation ist nicht trivial. Wahrscheinlich machen Sie das Falsche, wenn Sie KeyDown
verwenden. Wenn Sie wissen möchten, welches Zeichen ein Benutzer eingegeben hat, verwenden Sie KeyPress
, wodurch das bereits übersetzte Zeichen angezeigt wird.
Zum Beispiel ist Keys.Decimal
eine Taste auf dem Nummernblock, die .
im US-Layout und ,
im deutschen Layout entspricht. Keys.Oemcomma
und OemPeriod
sind wahrscheinlich ,
und .
die Buchstaben. Aber bei anderen Layouts kann das anders sein.
Oemcomma
und OemPeriod
sehen aus wie gute Kandidaten.
Schauen Sie sich die Keys
-Enumeration auf MSDN an.
Überprüfen Sie den Dezimalwert, das ist Ihr Schlüsselcode.
Ich tat dies:
Verwenden Sie Keys.Oemcomma
und Keys.OemPeriod
Haben Sie dies versucht "." C
Ein Schwimmerfilter:
Select Case e.KeyChar
Case "0"c To "9"c
Case "."c
If .Text.Contains(".") Then
e.Handled = True
End If
Case ChrW(Keys.Delete), ChrW(Keys.Back)
Case Else
e.Handled = True
End Select