2010-03-08 7 views
1

Comment déterminer si la pressée Key est une clé alphabétique concernant aux touches spécifiques de la culture :C# KeyDown dépend de la culture alphanumérique!

.: par exemple

'[' = 'ú' = 'ü' ... est la même clé, mais avec une valeur différente sur différentes langues Claviers.

J'ai essayé de comparer la valeur de clé ordinale: (int) e.Key> = 0x20E ..et < = .. mais il ne fonctionne pas bien, comme les touches de modification ont parfois même des codes ordinales.

Une idée? Merci

ÉDITÉE:

Hmm et comment cela?

System.Text.RegularExpressions.Regex objAlphaNumericPattern = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); 
      if (!objAlphaNumericPattern.IsMatch(e.Key.ToString()))  
      { 
       lp.IsDropDownOpen = true; 
      } 
+0

Quel est le but? Il y a peut-être une façon différente de réaliser ce que vous voulez faire. – mike

Répondre

-1

La méthode char.IsLetter est-elle utile dans votre cas?

char.IsLetter('['); //Return false 
char.IsLetter('ú'); //Return true 

Avec votre échantillon, on peut écrire:

if (!char.IsLetterOrDigit((char)e.Key)) 
{ 
    lp.IsDropDownOpen = true; 
} 
+1

e.Key est un code de clé virtuelle, pas un caractère. Bien que pour les caractères ASCII, la valeur soit généralement la même, ce n'est pas vrai dès que vous êtes en dehors de la plage 0-127 –