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 deKeys
que representa la clave que se encuentra actualmente en estado Abajo.KeyData
- Igual queKeyCode
, excepto que tiene información adicional en forma de modificadores - Shift / Ctrl / Alt, etc.KeyValue
- El valor numérico delKeyCode
.
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
.