Ключевое событие + клавиши-модификаторы не работают должным образом
Я видел множество постов и статей, в которых утверждается, что они делают то, что я от них ожидаю, к сожалению, ни один из них не дал мне решения и не помог мне до сих пор.
Видите ли, я использую: https://github.com/gmamaladze/globalmousekeyhook в качестве крюка клавиатуры...
Теперь, как поясняется использование в событии GlobalHookKeyPress, я пытаюсь реализовать:
if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { textBlock.Text = string.Format("CTRL + {0}", e.KeyChar); }
Однако, чтобы захватить CTRL +
CTRL + A), когда я делаю это таким образом, он просто записывает " CTRL +" в textBlock, а не захваченный ключ... Теперь, если я попробуйте вместо этого:
int key = Convert.ToInt32(e.KeyChar); if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { textBlock.Text = string.Format("CTRL + {0}", key); }
он правильно пишет CTRL + "KeyCode", однако, он дает мне правильный, но в его "числовой" форме, теперь, что я должен был бы сделать, чтобы сделать его " CTRL + A ", а не " CTRL +" 1 "?
Я попробовал один способ, но он показался слишком сложным и, вероятно, бесполезным, так как могли бы быть лучшие способы реализовать то, что я ищу, вот что я сделал:
int key = Convert.ToInt32(e.KeyChar);
if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
{
switch (key)
{
case 1:
textBlock.Text = "CTRL + A";
break;
...
default:
break;
}
}
Теперь моя идея состоит в том, чтобы, где вы видите ... явно продолжать писать (случай 19 для " CTRL + S " и т. Д.), Но, как вы можете видеть, это окажется слишком утомительным для задачи... Что бы вы порекомендовали сделать для этого особого случая.
ОБНОВЛЕНИЕ № 1
Хорошо, так что я продолжал копать, и это заставило это работать, я не знаю как, но он просто сделал это
Теперь я сталкиваюсь с небольшой проблемой... Чтобы зарегистрировать нажатие клавиши, я должен нажать целевую клавишу дважды... или даже нажать другую клавишу, затем вернуться к целевой клавише, и затем она зарегистрируется, как некоторые вроде задержки, позвольте мне объяснить...
Я хочу нажать CTRL + A, я нажимаю CTRL + A, и он ничего не делает, однако, если я нажимаю CTRL + B, кажется, что он ничего не сделал, и просто ничего не отображается, однако, если я нажимаю CTRL + B, затем возвращаемся к CTRL + A, он правильно отображает CTRL + A, надеюсь, вы понимаете меня... Теперь я не знаю, что происходит, но я копаюсь, если вы знаете, пожалуйста, поделитесь им со мной Буду очень полезно:D
Ура!