2016-09-07 2 views
-2

Ich versuche, Benutzereingaben auf ein KeyDown-Ereignis in einem DataGrid herunterzubrechen, indem Sie herausfinden, ob ihre Eingabe ein Buchstabe oder eine Zahl ist. Dies ist die Methode, die ich bis jetzt verwende;IsLetter auf DataGrid KeyDown-Ereignis

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"); 
    } 
} 

Dies führt jedoch bizzarely. Erstens passiert die IsDigit nie und funktioniert eindeutig nicht. Zweitens funktioniert der IsLetter, aber nur auf einigen Buchstaben (W, Z, X, V und Y). Es muss einen umfassenderen Weg geben, dies zu tun, da dies für mich eindeutig nicht funktioniert.

+0

sollten Sie melden 'Convert.ToChar (e.Key))' –

Antwort

1

Es gibt einen Unterschied zwischen key.toChar() und char, die Sie erwarten, dort zu sein. Sie können sich hier über Umwandlung lesen, aber es ist nicht einfach:

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

+0

@ thomas-ayoub hinzugefügt, wie es –

+0

im aktuellen Kontext zu verwenden Warum sollte Re-Implementieren Sie 'char.IsLetter()' und 'char.IsDigit()', wenn es bereits existiert und gut funktioniert? –

+0

Sie Recht bro, gibt es ein weiteres Problem in dieser Frage –