#c# #winforms #focus
#c# #winforms #фокус
Вопрос:
Когда я нажимаю клавишу F10 в своей программе, фокус теряется из главного окна моей программы и перемещается в строку меню. Оказывается, это странное поведение распространено во многих приложениях Windows.
Я думаю, это некрасиво, потому что клавиша Alt делает то же самое, и мы теряем драгоценную функциональную клавишу. Почему Windows делает это и как я могу решить проблему для моего приложения на C #?
Комментарии:
1. К вашему сведению, такое поведение для сочетания клавиш F10 существует, по крайней мере, с Windows XP: support.microsoft.com/kb/301583
2. Будьте осторожны при изменении «уродливого» поведения, которого привыкли ожидать ваши пользователи.
Ответ №1:
Используйте событие KeyDown для своей формы и обрабатывайте нажатие клавиши:
private void form_KeyDown(object sender, KeyEventArgs e)
{ if(e.KeyData == Keys.F10)
{
// Do what you want with the F10 key
e.SuppressKeyPress = true;
}
}
Также убедитесь, что для вашего forms KeyPreview установлено значение true.
Комментарии:
1. @Mark, на самом деле Дэн (OP) внес исправления. Поскольку у него нет прав на редактирование, я просто помог его изменениям закрепиться.
2. Никаких проблем — я просто благодарен за ответ! 🙂
Ответ №2:
это может решить проблему за вас
http://geekswithblogs.net/aghausman/archive/2009/04/26/disable-special-keys-in-win-app-c.aspx
Комментарии:
1. Этот подход предназначен для более сложного случая, когда вы хотите переопределить сочетания клавиш «system», например, Windows key D.
Ответ №3:
я использовал приведенный ниже трюк:
SendKeys.Send("Alt");
этот код освобождает форму от клавиши F10.