2016-09-07 2 views
-2

Je tente de décomposer l'entrée utilisateur sur un événement KeyDown sur un DataGrid en déterminant si leur entrée est une lettre ou un nombre. C'est la méthode que j'utilise jusqu'à présent;IsLetter sur l'événement DataGrid KeyDown

private void OnDataGridKeyDown(object sender, KeyEventArgs e) 
{ 
    if (char.IsLetter(Convert.ToChar(e.Key))) 
    { 
     MessageBox.Show("Letter"); 
    } 
    if (char.IsDigit(Convert.ToChar(e.Key))) 
    { 
     MessageBox.Show("Number"); 
    } 
} 

Cependant, cela fonctionne bizarrement. Premièrement, le IsDigit n'arrive jamais et ne fonctionne clairement pas. Deuxièmement, l'IsLetter fonctionne, mais seulement sur certaines lettres (W, Z, X, V et Y). Il doit y avoir une façon plus complète de faire cela, car cela ne marche pas pour moi.

+0

Vous devez vous connecter 'Convert.ToChar (e.Key))' –

Répondre

1

Il existe une différence entre key.toChar() et char auxquels vous vous attendez. Vous pouvez lire ici la conversion, mais ce n'est pas simple:

how to capture the '#' character on different locale keyboards in WPF/C#?

+0

@ thomas-ayoub ajouté comment l'utiliser dans le contexte actuel –

+0

Pourquoi on réimplémente 'char.IsLetter()' et 'char.IsDigit()' quand il existe déjà et fonctionne bien? –

+0

Vous avez raison, il y a un autre problème dans cette question –