Wie wandle ich e.KeyChar zu einer tatsächlichen Charakter Wert bei der Handhabung von Tastatur-events?
Alles was ich bin zu wollen tun, ist das eigentliche Zeichen, die gedrückt wird, wenn Sie Schlüssel eingegeben werden, der Fall.
Ist die einzige option die ich sehe ist e.KeyChar
was mir die position eher als das Zeichen selbst.
Was ich bin zu wollen tun, ist die Grenze der Werte die Taste drücken, um Ziffern zwischen 0-9. Die Art, wie ich es jetzt gerade Tue, ist nur if((e.KeyChar < 48 || (e.KeyChar > 57)))
Wirkt ein bisschen Billig, nur die Werte für 0 und 9, und ich würde gerne wissen, wie die Zeichen selbst, anstatt seinen Schlüssel.
EDIT: Danke für den input; also im Allgemeinen gibt es keinen Weg zu gehen, dass die e.KeyChar
auf den Wert von der Eingabe selbst.
Ich würde wirklich gerne meine event -, e -, und auf das Zeichen gedrückt, die direkt im Gegensatz zu der Verwendung von e ist.KeyChar zu bekommen, eine numerische Darstellung des Wertes.
winforms ist diese app
Ignorieren Sie nicht die backspace-Taste!
InformationsquelleAutor user1993843 | 2013-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein einfacher Weg, die erkennen, wenn die Taste gedrückt wird, eine Ziffer oder nicht:
InformationsquelleAutor e.beyer
KeyChar
ist einchar
Wert - es ist der Charakter selbst - 48 und 57 sind die ascii-Werte für0
und9
.In C# können Sie beziehen sich auf ein Zeichen über seinem numerischen ASCII-code, oder das eigentliche Zeichen in einfache Anführungszeichen. Daher kann Ihr code:
das ist genau die gleiche Sache.
InformationsquelleAutor Blorgbeard
e.KeyChar
ist diechar
entsprechende Taste gedrückt ist, nicht die position. Die .NET Framework verwendetchar
zur Darstellung eines Unicode-Zeichens. Wenn Sie von "tatsächlichen Charakter Wert", meinen Sie den ganzzahligen Wert der Zeichen 0-9, und nicht Ihren Unicode-Werten (48-57) Sie können dies tun:Zur Begrenzung der Werte die Taste drücken, um Ziffern zwischen 0-9:
Für eine vollständige Lösung, die es erlaubt Korrekturen:
Keys
Werte sind Tastatur-scan-codes, kann man nicht (sinnvoll) werfen Siechar
Werte.vielen Dank für diesen Hinweis.
Keys.Back
gearbeitet, weilKeys.Back = 8
- und Backspace-unicode =U+0008
(8). AllerdingsKeys.Delete = 46
und Löschen unicode =U+007F
(127), so war es falsch. Ich aktualisiert meine Antwort zu korrigieren.InformationsquelleAutor 2Toad