Evenement KeyDown : vbKeyDown et vbKeyUp

Résolu
Signaler
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Bonjour,

Alors j'ai un problème qui me fait péter un plomb : sur un usercontrol, j'aimerais capturer l'appui sur les flèches haut et flèches bas. Seulement l'évènement KeyUp ou KeyDown ne se déclenche pas pour les flèches (mais se déclenche pour toutes les autres touches !). J'ai essayé sur une form : pareil. J'ai essayé en mettant Keypreview à true : je capture toutes les autres touches sans problème.
J'ai essayé avec du subclassing : WM_KEYDOWN ne se déclenche jamais !!!

rahhhh
Pouvez-vous m'aider ?

MadMatt
A voir également:

7 réponses

Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

Attention toutefois :

Keypreeview = true ou non, le vbkeyup et vbkeydown seront "interceptés" prioritairement par VB pour le passage d'un contrôle à l'autre de certains types de contrôles, tels les CommandButtons.
Pour s'en convaincre :
Une Form avec uniquement deux boutons de commande et rien d'autre :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = vbKeyDown Then MsgBox "coucou"
 If KeyCode = vbKeyUp Then MsgBox "coucou"
End Sub



Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
 If KeyCode = vbKeyDown Then MsgBox "coucou"
 If KeyCode = vbKeyUp Then MsgBox "coucou"
End Sub



et coucou ne s'affichera jamais, dans ce cas ...
Mais ce n'est, de surcroît, qu'un exemple parmi d'autres pièges de l'espèce (avec d'autres contrôles encore)
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Je ne le crois pas ....(du moins depuis VB seul)
Mais le sujet m'intéresse grandement (et depuiis longtemps...)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,

testé
à l'instant
avec succès (tant avec une form qu'avec un UC) :






Option Explicit




Private Sub 
UserControl_Initialize()

    UserControl.KeyPreview = True
End Sub

Private Sub UserControl_KeyDown(KeyCode As
Integer, Shift As
Integer)
    If KeyCode = vbKeyUp Then
        Debug.Print "KEYDOWN FLECHE
HAUT"
    ElseIf KeyCode = vbKeyDown Then
        Debug.Print "KEYDOWN FLECHE
BAS"
    End If
End Sub

Private Sub UserControl_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyUp Then
        Debug.Print "KEYUP FLECHE
HAUT"
    ElseIf KeyCode = vbKeyDown Then
        Debug.Print "KEYUP FLECHE
BAS"
    End If
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Oui, c'est KeyPreview qui fait toute la différence.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Haaaaargggg alors moi j'ai l'impression que c'est ma scrollbar qui me prend la main (car en subclassing je reçoit les WM_SCROLL quand j'appui sur les touches...
Est-il possible de dire à VB de me laisser tranquille et de me laisser faire ?

MadMatt
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Ah oui (me rappelle)....
La seule astuce que j'avais à l'époque trouvée, avait été de garder la touche ALT enfoncée en me servant des flêches (sans rien modifier du code plus haut). L'enfoncement est alors reconnu, sans même avoir à traiter celui de la touche ALT.
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Erf... VB je l'aime bien, mais des fois...
Bon je vais faire une bricole. Merci à vous

MadMatt