Преобразовать Char В Ключи

у меня есть специальный символ ( / @ ), который я хочу преобразовать в Ключи.

В настоящее время я использую этот :

Keys k = (Keys)'/';

и во время отладки я получаю, что k равно:

тип - система LButton | RButton | MButton | Back | Space.Окна.Формы.Ключи!--4-->

код ключа k должен был быть 111.

Примечание: код работает для прописных букв, таких как:

Keys k = (Keys)'Z';

в этом случае код ключа k равен 90, что ОК.

Я пытаюсь найти способ конвертировать специальные символы В ключи. (или к их правильному коду ключа)

попытка отправить ключи глобально, используя:

public static void SendKey(byte keycode)
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
    }

SendKey((byte)Keys.{SomethingHere});

6 ответов


вы не можете бросить от char к ключам. Keys-это перечисление флагов, которое представляет, какие физические клавиши нажимаются на клавиатуре. То, что вы пытаетесь, может быть не простой проблемой для решения. Кто скажет, какую клавиатуру использовал пользователь и какое отображение генерирует какой конкретный символ на клавиатуре пользователя и их локали?

можете ли вы быть более конкретным о своей цели? Вы пытаетесь научить пользователя, как ввести специальный символ или что-то еще еще?

основываясь на вашем обновлении, вы должны использовать sendkeys будет класса.


Это старый вопрос, но я использовал этот:

Keys k = (Keys)char.ToUpper(c);

Если значение char a (С кодом 97) затем преобразование в A (С кодом 65) карты ключи.А и так далее...

надеюсь, что это поможет кому-то.


Это должно работать!

клавиши o = (Keys)перечисление.Метод Parse(typeof на(ключи), ((инт)Эл.Ключевой-символ).ToString ());


мой способ работает только с буквами и некоторыми другими клавишами.

string s = char.ToString(e.KeyChar);

это дает вам строку эквивалентных ключей. Что-то вроде вывода Keys.ToString(). Так что все, что нам нужно, это преобразование s его ключи эквиваленте!

(Keys) Enum.Parse(typeof(Keys), char.ToString(e.KeyChar).ToUpper());

удачи...


насколько я знаю, нет способа отобразить Keys перечисления char. Один задает коды ключей и модификаторы, полезные для System.Windows.Forms.Control в то время как другой представляет собой 16-битный символ Юникода (U+0000 до U+ffff).

всего разные понятия.


на мой взгляд, это идеальное решение с точки зрения читабельности.

Keys key = (Keys) Enum.Parse(typeof(Keys), c.ToString(), ignoreCase: true);