IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comportement/fonctionnement d'une Enumeration Wpf


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Comportement/fonctionnement d'une Enumeration Wpf
    Bonjour,
    je souhaite récupérer les touches numériques (pavé numérique + touches du haut du clavier) quand celles-ci sont pressées.
    Pour cela j'utilise une énumération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    public enum EnumTest
            {
                NumPad0 = 0,
                NumPad1 = 1,
                NumPad2 = 2,
                NumPad3 = 3,
                NumPad4 = 4,
                NumPad5 = 5,
                NumPad6 = 6,
                NumPad7 = 7,
                NumPad8 = 8,
                NumPad9 = 9,
                D0 = 0,
                D1 = 1,
                D2 = 2,
                D3 = 3,
                D4 = 4,
                D5 = 5,
                D6 = 6,
                D7 = 7,
                D8 = 8,
                D9 = 9,
            }
     
            private void Window_KeyDown(object sender, KeyEventArgs e)
            {
                String cle = ((EnumTest)Enum.Parse(typeof(EnumTest), e.Key.ToString())).ToString();                  //récupération de la clé
                int valeur = (int)((EnumTest)Enum.Parse(typeof(EnumTest), e.Key.ToString()));                           //récupération de sa valeur
     
                MessageBox.Show("L'enumeration est : " + cle + "\r\n Sa valeur est " + valeur);
     
            }
    Je récupère bien les bonnes valeurs par contre, les clés s'intervertissent entre les touches du clavier numérique (numPad) et les touches du haut du clavier(D) .
    Par exemple:
    - si je clic sur les touches 0, 1, 2, 3, 6, 7 ou 9 du pave numérique, les clés qui s'affichent sont bien numPad0, 1 , 2, 3, 6, 7 ou 9 . Par contre si je clique sur les touches 1, 2, 3, 6, 7 ou 9 du haut du clavier j'ai toujours numPad0, 1 , 2, 3, 6, 7 ou 9 qui s'affichent au lieu de (D0, D1, D2, D3, D6, D7 ou D9)
    - Inversement, si je clic sur la touche 4, 5 ou 8 du pave numérique, les clés qui s'affichent sont D4, D5 ou D8 (alors que çà devrait être numPad 4,5 ou 6). Si je clique sur les touches 4, 5, ou 8 du haut du clavier j'ai cette fois ci les touches correspondantes D4, D5 et D8

    Si je modifie le fichier Enum en gardant que les NumPadX, toutes les clés du pavé numériques sont reconnues.

    Heu.....j'espère que c'est clair???

    Si quelqu'un à une explication à ce comportement?

    Merci par avance

  2. #2
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Après il y a toujours moyen de contourner le problème avec deux énumérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public enum EnumTest
            {
                D0 = 0,
                D1 = 1,
                D2 = 2,
                D3 = 3,
                D4 = 4,
                D5 = 5,
                D6 = 6,
                D7 = 7,
                D8 = 8,
                D9 = 9,
            }
     
            public enum EnumTes2
            {
                NumPad0 = 0,
                NumPad1 = 1,
                NumPad2 = 2,
                NumPad3 = 3,
                NumPad4 = 4,
                NumPad5 = 5,
                NumPad6 = 6,
                NumPad7 = 7,
                NumPad8 = 8,
                NumPad9 = 9,
     
            }
            private void Window_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Key.ToString().Substring(0, 1) == "D")
                {
                    String cle = ((EnumTest)Enum.Parse(typeof(EnumTest), e.Key.ToString())).ToString();                  //recupration de la cle
                    int valeur = (int)((EnumTest)Enum.Parse(typeof(EnumTest), e.Key.ToString()));                        //récuperation de sa valeur
     
                    MessageBox.Show("L'enumeration est : " + cle + "\r\n Sa valeur est " + valeur);
                }
                else
                {
                    String cle = ((EnumTes2)Enum.Parse(typeof(EnumTes2), e.Key.ToString())).ToString();                  //recupration de la cle
                    int valeur = (int)((EnumTes2)Enum.Parse(typeof(EnumTes2), e.Key.ToString()));                        //récuperation de sa valeur
     
                    MessageBox.Show("L'enumeration est : " + cle + "\r\n Sa valeur est " + valeur);
                }
     
            }
    Mais ça n'explique pas le problème du premier post

  3. #3
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour

    Il y a parfois des "claviers" bidon dans le commerce !
    J'en avais un ou les caractères ">"(">" droite ,les crochets [],les parenthèse(),en lieu et place du ".","/",et "§" ) juste après le caractère "N" en bas.
    Quant au caractère "<" gauche,il était introuvable ce qui est cocasse.
    Ce devait être ou un clavier azerty suisse ou pire "belge".
    Je l'ais jeté à la poubelle ...car avec un tel clavier on est bon pour l'asile des fous.

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci pour la réponse.
    Au niveau du debugger en regardant l’événement, j'ai la bonne touche qui apparaît. C'est au niveau de l’énumération que ça pose problème

Discussions similaires

  1. WPF Valeur par défaut ComboBox ne fonctionne qu'une seule fois.
    Par viktor56 dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 11/12/2015, 11h31
  2. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  3. [VB6] Récupérer la constante d'une énumération
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/08/2004, 09h24
  4. [langage] Comportement étrange d'une variable
    Par Spaz dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2004, 11h29
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo