aplicación My WPF tiene un comportamiento provocada por las teclas de función (F1 - F12).La detección de la presión de usuario F10 en WPF
Mi código es a lo largo de estas líneas:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.F1:
...
case Key.F2:
...
}
}
Esto funciona para todas las teclas de función, excepto F10. La depuración, me parece que e.Key == Key.System
cuando el usuario presiona F10.
En la definición de enum, F10 = 99
y System = 156
, por lo que puedo descartar que sea un valor de enum duplicado (como PageDown = Next = 20
).
Entonces, ¿cómo puedo saber cuándo el usuario presiona F10?
¿Es seguro buscar Key.System
en su lugar? Esto se siente un poco sucio, ¿podría ser posible que Key.System
alguna vez fuera el resultado de alguna otra tecla presionada? ¿O hay algún ajuste en algún lugar que hará que F10 informe como Key.F10
?
Eso está bien. Me parece que también tengo que establecer 'e.Handled = true' cuando' e.Key == Key.System', para asegurar que el foco no quede a la izquierda en la caja de control. (La casilla de control es invisible en mi aplicación porque estoy usando 'WindowStyle = None', lo que hace que el comportamiento predeterminado de F10 sea aún más confuso para el usuario.) Además,' e.Key == Key.System' cuando el usuario presiona la tecla Alt también, y tal vez en algunos otros casos, por lo que 'e.SystemKey' es definitivamente el camino a seguir en lugar de solo suponer que es F10. ¡Gracias! – teedyay