l'application Mon WPF a un comportement déclenché par les touches de fonctions (F1 - F12).l'utilisateur Détection appuyant sur F10 dans WPF
Mon code est le long de ces lignes:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.F1:
...
case Key.F2:
...
}
}
Cela fonctionne pour toutes les touches F, sauf F10. Débogage, je trouve que e.Key == Key.System
lorsque l'utilisateur appuie sur F10.
Dans la définition enum, F10 = 99
et System = 156
, je peux donc exclure qu'il s'agisse d'une valeur enum dupliquée (comme PageDown = Next = 20
). Ainsi, comment savoir quand l'utilisateur appuie sur F10?
Est-il sûr de vérifier Key.System
à la place? Cela semble un peu sale - est-il possible que Key.System
résulterait d'une autre touche pressée? Ou y a-t-il un réglage quelque part qui fera F10 comme Key.F10
?
C'est cool. Je trouve que je dois aussi mettre 'e.Handled = true' quand' e.Key == Key.System', pour s'assurer que le focus ne reste pas sur le contrôle. (La boîte de contrôle est invisible dans mon application car j'utilise 'WindowStyle = None', ce qui rend le comportement F10 par défaut encore plus déroutant pour l'utilisateur.) Aussi,' e.Key == Key.System' quand l'utilisateur appuie sur la touche Alt aussi - et peut-être dans d'autres cas - donc 'e.SystemKey' est définitivement la solution, au lieu de supposer que c'est F10. Merci! – teedyay