Преобразовать 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);