Windows Phone 8.1 Textfeld Zeichen VirtualKey Validierung
Ich entwickle Windows Phone 8.1 App. In einem Textfeld möchte ich verhindern, dass der Benutzer nur nicht digitale Buchstaben [0-9] eingibt.
Also hier ist mein Code:
private void NumKeyDown(object sender, KeyRoutedEventArgs e)
{
bool isNumber = (e.Key == Windows.System.VirtualKey.Number0 ||
e.Key == VirtualKey.Number1 ||
e.Key == VirtualKey.Number2 ||
e.Key == VirtualKey.Number3 ||
e.Key == VirtualKey.Number4 ||
e.Key == VirtualKey.Number5 ||
e.Key == VirtualKey.Number6 ||
e.Key == VirtualKey.Number7 ||
e.Key == VirtualKey.Number8 ||
e.Key == VirtualKey.Number9 ||
e.Key == VirtualKey.Back);
CoreVirtualKeyStates shiftState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift);
bool shiftIsNotDown = true;
if ((shiftState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
shiftIsNotDown = false;
e.Handled = !(isNumber && shiftIsNotDown);
}
es funktioniert, aber es gibt zwei Hauptmängel:
1- es akzeptiert auch die verschobenen Zeichen (d. H. @ # $% ^ & *), Solange dies nicht gewünscht ist.
2- Wenn ich die App starte, wird das Textfeld mit einer Nummer gefüllt. Ich kann eine beliebige Zahl oder ein beliebiges Zeichen (! @ # $% ^) Eingeben und mit der löschenBACKSPACE
. während dieser Zeit dieShiftState
istNONE
. Sobald ich jedoch alle Inhalte in der Textbox mit der löscheBACKSPACE
dasShiftState
ändert sich zu [locked | Down
] und ich kann in dieses Textfeld nichts mehr eingeben.
bemerke, dass ich niemals die Shift-Taste berühre!
wo irre ich mich hier ??
AKTUALISIEREN
Ich habe festgestellt, dass die Verwendung der Wischfunktion Textbuchstaben eingibt, ohne das von mir angewendete keyDown-Ereignis auszulösen :(
Jede Hilfe wird gebeten