Получите Char от ключа

Я кодирую пользовательский текстовый редактор, и я использую события KeyDown и KeyUp. Эти события получают KeyEventArgs из параметров, в которые включен экземпляр "Key".

Как я могу преобразовать этот "ключ" в реальный char?

Использование Key.ToString() с помощью "." Я получаю "OmePeriod" или с "," я получаю "OmeComma". Я могу напрямую преобразовать эти значения... но это тяжелая работа, и я уверен, что должен существовать любой класс, который преобразует эти ключи в реальный "char".

Спасибо!

С уважением.

Ответ 1

Основная проблема здесь в том, что событие, которое вы ловите, является событием клавиатуры на клавиатуре и что ключ действительно является ключом и НЕ символом. Между ними есть карта! Например, при наборе shift-A вы получите два события вместо одного для нажатия.

это обсуждение может помочь: С# Как перевести виртуальный код ключа на char?

Ответ 2

Вместо использования события KeyDown попробуйте использовать событие TextInput. Прикрепите обработчик событий, который выглядит так:

private void Grid_TextInput(object sender, TextCompositionEventArgs e)
{
    Char keyChar = (Char)System.Text.Encoding.ASCII.GetBytes(e.Text)[0];
    Debug.WriteLine(keyChar);
}

Обратите внимание: это захватывает только первый байт, и это не будет работать для международного (Unicode) текста. Он может не работать и для более сложных событий ввода текста, поэтому будьте внимательны!

См. эту статью MSDN для получения дополнительной информации.

Ответ 5

Переместите e.KeyValue на char. Пример:

например.

private void myTextBox_KeyDown(object sender, KeyEventArgs e)
{
    char pressedCharacter = (char)e.KeyValue;
}