Evenement KeyDown : vbKeyDown et vbKeyUp [Résolu]

Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
- - Dernière réponse : MadM@tt
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
- 1 févr. 2009 à 18:57
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
4
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmf0
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
4
3
Merci
Je ne le crois pas ....(du moins depuis VB seul)
Mais le sujet m'intéresse grandement (et depuiis longtemps...)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmf0
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
30
0
Merci
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 
Commenter la réponse de PCPT
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
73
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
0
Merci
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
Commenter la réponse de MadM@tt
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
4
0
Merci
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.
Commenter la réponse de jmf0
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
16 juillet 2009
0
Merci
Erf... VB je l'aime bien, mais des fois...
Bon je vais faire une bricole. Merci à vous

MadMatt
Commenter la réponse de MadM@tt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.