2009-02-19 7 views

Répondre

12

Modifier: D'une façon ou d'une autre, j'ai mal interprété votre question pour inclure la vérification d'un caractère valide. L'avez-vous modifié? J'ai ajouté une description de chacun.

  • CodeTouche est la valeur d'énumération Keys pour la clé qui est en baisse
  • KEYDATA est le même que CodeTouche, mais combiné avec une MAJ/CTRL/touches ALT
  • KeyValue est tout simplement une représentation entière de KeyCode

Si vous juste besoin t Personnellement, je recommanderais probablement d'utiliser l'événement KeyPress et en utilisant le KeyPressEventArgs. KeyChar propriété. Vous pouvez ensuite utiliser Char.IsLetterOrDigit() pour savoir si c'est un caractère valide. Vous pouvez également convertir KeyEventArgs.KeyCode en un caractère, puis utiliser Char.IsLetterOrDigit pour cela.

+0

Je ne suis pas d'accord ... Vous supposez que l'utilisateur ne veut pas attraper de modificateurs et que sa saisie est limitée au clavier ASCII. – Cerebrus

+0

IsLetterOrDigit fonctionne uniquement avec ascii? – Svish

+0

IsLetterOrDigit utilise CharUnicodeInfo.GetUnicodeCategory si le caractère n'est pas latin. –

1

Je suggère d'utiliser la propriété KeyCode pour vérifier l'énumération Keys pour la plupart des opérations. Cependant, certaines des différences fondamentales ci-dessous pourraient vous aider à mieux décider lequel vous avez besoin pour votre situation.

Différences:

  • KeyCode - Représente la valeur d'énumération Keys qui représente la clé qui est actuellement en état vers le bas.

  • KeyData - Comme KeyCode, sauf qu'il a des informations supplémentaires sous forme de modificateurs - Maj/Ctrl/Alt etc.

  • KeyValue - La valeur numérique de la KeyCode.

+0

Mais KeyCode et KeyData a le même type, l'énumération Keys. Je ne peux pas trouver d'autres là-bas? – Svish

+0

Il ne sera différent que si un modificateur de touche (shift/alt/ctrl) est enfoncé. –

+0

ooh, parce que c'est une chose de drapeaux? – Svish

0

Très basique à l'aide 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

Voir my answer à votre other question:

Utilisez le cas KeyPressed.

MSDN Citation:

A KeyPressEventArgs spécifie le caractère qui est composé lorsque l'utilisateur appuie sur une touche. Par exemple, lorsque l'utilisateur appuie sur SHIFT + K, la propriété KeyChar retourne une majuscule K.

De cette façon, vous ne avez pas besoin de mess avec e.KeyCode, e.KeyData et e.KeyValue.

+0

Oui, accepté votre réponse dans l'autre question. Mais ici, j'étais plus à la recherche d'une explication générale de leurs utilisations. C'est pourquoi je l'ai divisé. Quelque chose que je suis venu à penser à juuust quand j'ai cliqué sur le bouton soumettre, donc, désolé de la confusion =) – Svish

Questions connexes