visual tecla studio presionada form event detectar c# keyboard

c# - tecla - keypress windows forms



C#: En un evento KeyDown, ¿qué debo usar para verificar qué tecla está desactivada? (4)

Sugiero usar la propiedad KeyCode para verificar contra la enumeración de Keys para la mayoría de las operaciones. Sin embargo, algunas de las diferencias básicas a continuación pueden ayudarlo a decidir mejor cuál necesita para su situación.

Diferencias

  • KeyCode : representa el valor de enumeración de Keys que representa la clave que se encuentra actualmente en estado Abajo.

  • KeyData - Igual que KeyCode , excepto que tiene información adicional en forma de modificadores - Shift / Ctrl / Alt, etc.

  • KeyValue - El valor numérico del KeyCode .

En un evento KeyDown, tengo KeyEventArgs para trabajar. Tiene (entre otras cosas) estas tres propiedades:

  • e.KeyCode
  • e.KeyData
  • e.KeyValue

¿Cuál debería usar para qué?


Uso muy básico de KeyDown

private void tbSomeText_KeyDown (object sender, KeyEventArgs e) { if (e.KeyCode == Keys.B && e.Modifiers != Keys.Shift) { MessageBox.Show("You Pressed b"); } else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Shift) { MessageBox.Show("You Pressed Shift+A"); } }


Editar: de alguna manera leí mal su pregunta para incluir la comprobación de un personaje válido. ¿Lo modificaste? He agregado una descripción de cada uno.

  • KeyCode es el valor de enumeración de claves para la clave que está abajo
  • KeyData es lo mismo que KeyCode, pero combinado con cualquier tecla SHIFT / CTRL / ALT
  • KeyValue es simplemente una representación entera de KeyCode

Si solo necesitas el personaje, probablemente te recomiendo usar el evento KeyPress y usar KeyPressEventArgs . Propiedad de KeyChar . Luego puede usar Char.IsLetterOrDigit () para averiguar si es un personaje válido.

Alternativamente, es posible que pueda convertir KeyEventArgs.KeyCode en un char y luego use Char.IsLetterOrDigit en eso.


Vea mi respuesta a su otra pregunta :

Use el evento KeyPressed .

Citando MSDN:

A KeyPressEventArgs especifica el carácter que se compone cuando el usuario presiona una tecla. Por ejemplo, cuando el usuario presiona MAYÚS + K, la propiedad KeyChar devuelve una K. mayúscula.

De esta forma, no necesita perder el tiempo con e.KeyCode , e.KeyData y e.KeyValue .