Моему приложению WPF инициировали поведение ключи функций (F1-F12).
Мой код приезжает эти строки:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.F1:
...
case Key.F2:
...
}
}
Это работает на все F-ключи кроме F10. Отладка, я нахожу это e.Key == Key.System
когда пользователь нажимает F10.
В перечислимом определении, F10 = 99
и System = 156
, таким образом, я могу исключить его являющийся дублирующимся перечислением значений (как PageDown = Next = 20
).
Так, как я говорю, когда пользователь нажимает F10?
Действительно ли безопасно проверить на Key.System
вместо этого? Это чувствует себя немного грязным - мог бы это быть возможным это Key.System
когда-либо следовал бы из некоторой другой нажатой клавиши? Или есть ли некоторая установка где-нибудь, которая сделает отчет о F10 как Key.F10
?
В дополнение к ответу Yacoder, используйте следующее для проверки клавиши F10:
case Key.System:
if (e.SystemKey == Key.F10)
{
// logic...
}
Свойство SystemKey сообщит вам, какая клавиша System была нажата.
F10 запускает меню окна. Это то же самое во всех приложениях Windows.
Похоже, что key.system
- ожидаемое значение для ключа F10.