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

VB.NET Discussion :

Problème pour détecter SHIFT/CTRL droite ou gauche


Sujet :

VB.NET

  1. #1
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut Problème pour détecter SHIFT/CTRL droite ou gauche
    Bonjour à tous,

    je cherche à détecter la saisie des différentes touches du clavier dans un TextBox, chose que je réussi à faire via le code suivant:
    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
        Private Sub TextBoxLu_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBoxLu.KeyDown
     
            ' Mise à jour du fichier de traces
            MaJTrace("Valeur du texte: " & Me.TextBoxLu.Text & ") | Saisie clavier: " & AssociationClavierValeur.keyvalue(e.KeyValue))
     
            ' Suppression des appuis de touche sur caractères non voulus
            Select Case e.KeyCode
                Case Keys.A, Keys.B, Keys.C, Keys.D, Keys.E, Keys.F, Keys.G, Keys.H, Keys.I, Keys.J, Keys.K, Keys.L, Keys.M, Keys.N, Keys.O, Keys.P, Keys.Q, Keys.R, Keys.S, Keys.T, Keys.U, Keys.V, Keys.W, Keys.X, Keys.Y, Keys.Z, Keys.NumPad0, Keys.NumPad1, Keys.NumPad2, Keys.NumPad3, Keys.NumPad4, Keys.NumPad5, Keys.NumPad6, Keys.NumPad7, Keys.NumPad8, Keys.NumPad9, Keys.Back, Keys.Right, Keys.Left, Keys.Home, Keys.End, Keys.Delete
                    ' Touche autorisée, on ne fait rien
                Case Else
                    ' touche non autorisée, on l'ignore
                    e.SuppressKeyPress = True
            End Select
     
        End Sub
    Cependant je ne réussi pas faire la différence entre l'appui des touches droites et gauches du clavier pour les "fonctions" SHIFT et CTRL.
    Sur MSDN, ils parlent bien de Rightshift, Leftshift, Rightctrl, Leftctrl associés à e.keys, mais je n'ai pas de e.keys dans keyeventargs??? du coup je peux détecter SHIFT et CTRL mais sans savoir si cela vient des touches droites de mon clavier ou de la gauche.

    En fait j'ai un clavier de dessiné sous ma textbox pour préciser les touches autorisées ou non et je voudrais l'animer en fonction de la touche appuyée d'ou la nécessité de connaitre chaque touche.
    Nom : Clavier.png
Affichages : 1651
Taille : 27,1 Ko
    Merci d'avance de vos réponses.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Bonjour Sibama,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Chart1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles Chart1.KeyDown
            If e.KeyCode = Keys.LControlKey Or e.KeyCode = Keys.RControlKey Then
     
            End If
    End Sub

  3. #3
    Membre du Club Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 147
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse chaparo, mais dans ma TextBox, ça ne marche pas super, en fait les keycode .rshiftkey/.lcontrolkey... ne sont pas reconnus (je peux bien les mettre dans mon code, mais un test sur eux ne donne rien), c'est le générique .shiftkey/.controlkey qui est reconnu.

    Par contre, à partir de ton exemple, j'ai trouvé ce code sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal key As Keys) As Short
    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
         If e.KeyCode = Keys.ShiftKey Then
                If Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey)) Then
                    MessageBox.Show("Left Shift Key Pressed")
                End If
     
                If Convert.ToBoolean(GetAsyncKeyState(Keys.RShiftKey)) Then
                    MessageBox.Show("Right Shift Key Pressed")
                End If
            End If
     
            If e.KeyCode = Keys.ControlKey Then
                If Convert.ToBoolean(GetAsyncKeyState(Keys.LControlKey)) Then
                    MessageBox.Show("Left Control Key Pressed")
                End If
     
                If Convert.ToBoolean(GetAsyncKeyState(Keys.RControlKey)) Then
                    MessageBox.Show("Right Control Key Pressed")
                End If
            End If
    qui lui fonctionne, je vais donc adapter ça pour gérer ces BEEP de touches.

    Merci encore à toi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2014, 11h50
  2. Problème pour mettre un tableau à droite de ma page
    Par sebac dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 14/06/2010, 14h16
  3. Réponses: 0
    Dernier message: 03/10/2007, 13h11
  4. [VB6]shift ou ctrl-droit sur un DBGrid
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/05/2006, 14h20

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