Evenement KeyDown : vbKeyDown et vbKeyUp [Résolu]

MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention - 1 févr. 2009 à 15:07 - Dernière réponse : MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention
- 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
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 1 févr. 2009 à 17:27
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)

Merci jmf0 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

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

Merci jmf0 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de jmf0
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 1 févr. 2009 à 15:19
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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 1 févr. 2009 à 15:38
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
MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention - 1 févr. 2009 à 18:18
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
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 1 févr. 2009 à 18:51
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
MadM@tt 2215 Messages postés mardi 11 novembre 2003Date d'inscription 16 juillet 2009 Dernière intervention - 1 févr. 2009 à 18:57
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.