2011-03-13 5 views
11

C'è un modo per determinare se una chiave è lettera/numero (A-Z, 0-9) nello KeyEventArgs? O devo farlo da solo? Ho trovato un modo con e.KeyCode, è così preciso?Posso determinare se un KeyEventArg è una lettera o un numero?

if(((e.KeyCode >= Keys.A  && e.KeyCode <= Keys.Z) 
|| (e.KeyCode >= Keys.D0  && e.KeyCode <= Keys.D9) 
|| (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)) 
+0

Come si definisce la lettera? solo A-Z o lettere anche in altre lingue? E lo stesso per i numeri. E una chiave non è nemmeno un carattere (non c'è corrispondenza 1 a 1 tra chiavi e caratteri), quindi non può essere una lettera/numero. – CodesInChaos

+2

Non puoi sapere questo dall'evento KeyDown. Solo dopo che la chiave virtuale è stata tradotta con il layout della tastiera dell'utente, lo sai. Utilizzare invece l'evento KeyPressed. –

risposta

9
+1

Un sacco di chicche simili in ['Char'] (http://msdn.microsoft.com/en-us/library/424s1h3z.aspx). –

+1

Ok, non lo sapevo! bella risposta. – Andr

6

In WPF? Utilizzare gli eventi PreviewTextInput o TextInput invece di KeyDown

+0

Ovviamente non WPF. –