2009-02-19 13 views

Respuesta

12

Edit: De alguna manera he leído 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 Keys enumeración de la tecla que se ha reducido
  • KeyData es el mismo que el código clave, pero combinado con cualquier Shift// Alt Ctrl
  • KeyValue es simplemente una representación entera de KeyCode

Si acaba de necesita t El personaje, probablemente recomendaría usar el evento KeyPress y usar el KeyPressEventArgs. KeyChar propiedad. Luego puede usar Char.IsLetterOrDigit() para averiguar si es un personaje válido.

Alternativamente, puede convertir KeyEventArgs.KeyCode en un char y luego usar Char.IsLetterOrDigit en eso.

+0

No estoy de acuerdo ... Estás asumiendo que el usuario no quiere detectar ningún modificador y su entrada está limitada al teclado ASCII. – Cerebrus

+0

IsLetterOrDigit solo funciona con ascii? – Svish

+0

IsLetterOrDigit usa CharUnicodeInfo.GetUnicodeCategory si el caracter no es latino. –

1

Sugeriría usar la propiedad KeyCode para comparar con la enumeración 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 Keys enumeración que representa la llave que se encuentra actualmente en el estado Abajo.

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

  • KeyValue - El valor numérico de la KeyCode. utilizando

+0

Pero KeyCode y KeyData tienen el mismo tipo, enumeración de claves. No puedo encontrar ningún extra allí? – Svish

+0

Solo será diferente si un modificador de tecla (shift/alt/ctrl) está abajo. –

+0

ooh, porque es una cosa de banderas? – Svish

0

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"); 
     } 
    } 
0

Ver my answer a su other question:

Uso caso KeyPressed.

Citando MSDN:

A KeyPressEventArgs especifica el carácter que está compuesta cuando el usuario pulsa una tecla. Por ejemplo, cuando el usuario presiona Shift + K, la propiedad devuelve un KeyChar K. mayúsculas

De esta manera usted no tiene que perder el tiempo con e.KeyCode, e.KeyData y e.KeyValue.

+0

Sí, aceptó su respuesta en la otra pregunta. Pero aquí estaba más buscando una explicación general de sus usos. Por eso lo dividí. Algo que comencé a pensar sobre juuust cuando hice clic en el botón de enviar, entonces, disculpe la confusión =) – Svish

Cuestiones relacionadas