Я пытаюсь сделать что-то похожее на этого парня здесь, но ответ там оставляет мне небольшую ошибку, которая не такая уж большая проблема, но уродливая с точки зрения пользователя:
Когда он помещает данные нажатия клавиш в текстовое поле, если пользователь нажимает клавиши-модификаторы перед символом (как это делается), текстовое поле заполняется, включая имя клавиши модификатора. То есть я получаю такие результаты, как «CTRL + SHIFT + ShiftKey». Все, что я пытаюсь сделать для подавления этого последнего ключевого кода, в конечном итоге приводит к подавлению и реальных клавиш.
Это моя основная попытка (простите за блочность, я разбивал ее и переписывал ее части, пытаясь решить эту проблему самостоятельно, но безрезультатно) без подавления, о котором я прошу.
String pressed ="";
e.SuppressKeyPress = true;
if ((e.Modifiers & Keys.Control) > 0)
{
pressed += "CTRL + ";
}
if ((e.Modifiers & Keys.Alt) > 0)
{
pressed += "ALT + ";
}
if ((e.Modifiers & Keys.Shift) > 0)
{
pressed += "SHIFT + ";
}
pressed += e.KeyCode;
txtCopyKey.Text = pressed;
Надеюсь, я достаточно ясно понимаю, о чем прошу.
!=0
, а не>0
, так как если установлен MSB, он будет отображаться как отрицательный. - person Marc Gravell   schedule 04.01.2010