2010-10-29 3 views
5

У меня есть приложение .NET с кнопками, которые используют числа для мнемоники. (например, «& 1 - Проверить» и «& 2 - Денежные средства») Когда я нажимаю Alt + 1, я ожидаю, что кнопка «Проверка» будет нажата. Это работает, когда я использую стандартные цифровые клавиши на клавиатуре. Однако, когда я нажимаю Alt + 1 с помощью цифровой клавиатуры, Windows берет на себя и вставляет символ, соответствующий «alt code» в 1. См. http://alt-codes.org/list/. Как я могу предотвратить это в моем приложении?Как предотвратить использование кодов Alt в приложении .NET?

Спасибо!

+2

Вы могли бы просто использовать более естественные мнемоник, то есть, используя ключевые буквы из вариантов выбираются. – Lazarus

ответ

2

Это можно сделать, включив KeyPreview в форме и обработав событие KeyUp. Следующего код обходит функциональный альт коды Windows, и вызывает кнопку мыши, когда я ударил Alt + NumPad1:

if (e.Alt && e.KeyCode == Keys.NumPad1) 
{ 
    e.Handled = true; 
    button1.PerformClick(); 
} 
1

Эта комбинация клавиш Alt + numkey является функцией Windows (очень полезна), вы не можете ее обойти.
Я пробовал это некоторое время назад, работая над игрой (вы знаете ... ярлыки навыков?), И я провел некоторое исследование ... Это невозможно.
Я был бы очень рад увидеть, как это происходит!

+0

Holy! @ # $ (Я не могу комментировать другие ответы), я рад, что вы нашли способ! : O Тем не менее, я думаю, что это ошибка. ☺ Редактирование: крючки для клавиатуры даже не запускались для меня ... – Vercas

1

Возможный способ сделать это: использовать keyboard hooks, перехватить нажатия клавиш, а затем действовать по своему усмотрению. Теперь, решит ли эта проблема и остановит ОС от вставки символа, я не знаю.