2 votes

Comment obtenir les caractères lus sur le clavier ?

J'essaie de placer les caractères lus sur le clavier dans une variable pour une manipulation ultérieure. J'ai la liste suivante que je souhaite reconnaître si elle a été saisie par un utilisateur.

Liste des entrées du clavier :

  • lettres
  • [
  • ]
  • ~
  • ^
  • numéros

Une partie du code :

 void HookManager_KeyUp(object sender, KeyEventArgs e)
 {
       string test = e.KeyCode.ToString();

Dans ce cas, les chiffres, les lettres et les crochets fonctionnent, mais l'élément ^ qui nécessite la touche shift est lu de manière incorrecte. Par exemple, il lit ^ qui est sur la touche 6 comme une valeur de chaîne de caractères de 6 et non ^ comme il devrait l'être. Voici les autres lectures

  • [ = OemOpenBracket,
  • ] = Oem6,
  • ~ = OemTilde,
  • ^ = D6.

Donc D6 n'a pas de sens. Toute aide serait appréciée.

Merci

AA

3voto

Reed Copsey Points 315315

Vous devez vérifier si e. Changement de poste est vrai, en plus de la simple vérification de la propriété KeyCode.

1voto

t0mm13b Points 21031

Ce serait plus facile de le faire de cette façon :

private readonly string VALID\_KEYS = "\[\]~^ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

private void txtBox\_KeyPress(object sender, KeyPressEventArgs e) {
    if (VALID\_KEYS.IndexOf(char.ToUpper(e.KeyChar)) != -1 || e.KeyChar == (char)8)
         e.Handled = false;
    else
         e.Handled = true;
}

0voto

Ram Points 487

Ceci pourrait vous aider...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSKEYDOWN = 0x104;

        if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
        {
            switch (keyData)
            {
                case Keys.Shift | Keys.D6:
                    //Your code
                    break;
            }
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

Merci, Ram

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X