Как получить нормальные символы из события WPF KeyDown? - PullRequest
10 голосов
/ 28 января 2009

Я хочу, чтобы символы ASCII передавались свойством e.Key из события WPF KeyDown.

Ответы [ 3 ]

4 голосов
/ 28 января 2009

К сожалению, нет простого способа сделать это. Есть 2 обходных пути, но они оба падают при определенных условиях.

Первый - преобразовать его в строку:

TestLabel.Content = e.Key.ToString();

Это даст вам такие вещи, как CapsLock, Shift и т. Д., Но в случае буквенно-цифровых клавиш он не сможет сообщить вам состояние смещения и т. Д., Поэтому вам придется разберись сам.

Второй вариант - вместо этого использовать событие TextInput, где e.Text будет содержать фактический введенный текст. Это даст вам правильный символ для буквенно-цифровых клавиш, но не даст вам управляющих символов.

3 голосов
/ 28 января 2009

Из вашего краткого вопроса я предполагаю, что вам нужен способ получить значение ASCII для нажатой клавиши. Это должно работать

private void txtAttrName_KeyDown(object sender, KeyEventArgs e)
        {
            Console.WriteLine(e.Key.ToString());
            char parsedCharacter = ' ';
            if (Char.TryParse(e.Key.ToString(), out parsedCharacter))
            {
                Console.WriteLine((int) parsedCharacter);
            }
        }

например. если вы нажмете Ctrl + S, вы увидите следующий вывод.

LeftCtrl
S
83
0 голосов
/ 25 марта 2011

System.Enum.ToObject (e.Key.GetType (), (byte) e.Key) .ToString ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...