2011-07-12 13 views
6

Tengo un Windows.Form y allí modifiqué ProcessCmdKey. Sin embargo, esto funciona con todas las teclas F excepto F10. Estoy intentando buscar el motivo por el que no se llama a ProcessCmdKey cuando presiono F10 en mi Formulario.F10 La clave no se detecta

¿Puede alguien darme un consejo sobre cómo puedo encontrar la causa?

Saludos cordiales, Thomas

+0

¿Apagaste el F-Lock? –

+0

Intente utilizar el evento KeyDown en su lugar, debería funcionar. – Tigran

Respuesta

8

Windows trata F10 diferente. Se proporciona una explicación en la sección "Comentarios" here on MSDN

+0

Está usando ProcessCmdKey en lugar de KeyDown, que debería funcionar bien. –

1

Acabo de probar este código con Windows Forms en .NET 4 y obtuve el cuadro de mensaje como se esperaba.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F10) 
    { 
     MessageBox.Show("F10 Pressed"); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+1

Cuando creo un nuevo formulario, también funciona allí. Pero tengo que averiguar por qué F10 no está funcionando con la forma existente. – BennoDual

1

Puede ser que consiguiera su problema, por lo que tratar de adivinar:

¿Ha definido KeyPreview propiedad de su WindowsForm a true?

Esto habilitará la posibilidad de que WindowsForm continúe presionando eventos antes de pasar al control que mantiene el foco en la IU en ese preciso momento.

Avísame si funciona, por favor.

Atentamente.

+1

Sí, he configurado KeyPreview en verdadero, pero no está funcionando. – BennoDual

+0

"Sin embargo, esto funciona con todas las teclas F excepto F10", en este punto yo, personalmente, no veo ninguna otra respuesta como si tuviera alguna aplicación instalada en su PC que engancha esa clave: escritorio múltiple, algunos aplicación multimedia ... ¿Puedes intentar ejecutar tu aplicación en otra PC? – Tigran

+0

Sólo curiosidad @ t.kehl, ¿fue algo relacionado con mi último comentario? Cuase, ahora que realmente pienso en eso, expirí algo así en VS 2010 también, cuando instalé algunas aplicaciones que instalen hooks, algunas teclas de corte dejan de funcionar. – Tigran

0

En mi caso yo estaba tratando de igualar e.key a system.windows.input.key.F10 y no no funcionó (althougth F1 a F9 hizo)

Select Case e.Key 

Case is = Key.F10 
... do some stuff 

end select 

Sin embargo, he cambiado a

Select Case e.Key 

Case is = 156 
... do some stuff 

end select 

y funcionó.

Cuestiones relacionadas