Я делаю приложение Windows (WinForms) и хотел бы, чтобы мое приложение назвало метод, когда пользователь нажимает F5 - это должно работать независимо от того, что делает пользователь, но они должны использовать программу - я не хочу использовать глобальные рычаги - какие-либо идеи?
Переопределите форму ProcessCmdKey на Вашей основной форме и ищите F5.
protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
{
bool bHandled = false;
// switch case is the easy way, a hash or map would be better,
// but more work to get set up.
switch (keyData)
{
case Keys.F5:
// do whatever
bHandled = true;
break;
}
return bHandled;
}
Проверьте свойство Form.KeyPreview
, оно позволит вам поймать все события KeyDown
, KeyUp
и KeyPress
на уровне формы, прежде чем разрешить их обработку отдельными элементами.
Если у вас есть только одна форма, которая может иметь фокус, вы можете установить свойство KeyPreview
этой формы на true
и обрабатывать событие KeyPress
.
Свойство KeyPreview
приведет к тому, что форма получит все нажатия клавиш, независимо от того, какое управление на форме имеет фокус ввода.