MouseWheel et Keyboard events

Résolu
F6DNH Messages postés 4 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 3 février 2012 - 3 févr. 2012 à 09:52
F6DNH Messages postés 4 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 3 février 2012 - 3 févr. 2012 à 14:16
Contexte : Windows 7 Pro + Microsoft Visual Studio 2010
Version 10.0.30319.1 RTMRel
Microsoft .NET Framework
Version 4.0.30319 RTMRel
Version installée : VB Express

Bonjour,

Je code une application graphique et je souhaite pouvoir récupérer les événements du clavier et de la souris, en particulier MouseWheel

Private Sub picImage_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles picImage.MouseHover
   picImage.Focus()
End Sub

Private Sub picImage_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picImage.MouseWheel
   ...
End Sub

Private Sub frmMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
   ...
End Sub


Si dans MouseHover j'invoque Focus(), je récupère bien les événements MouseWheel.
En revanche KeyDown ne répond plus.

Si dans MouseHover je n'invoque pas Focus(), je récupère bien les événements KeyDown.
En revanche MouseWheel ne répond plus.

Où est mon erreur?
Comment récupérer KeyDown et MouseWheel ?

Merci

6 réponses

F6DNH Messages postés 4 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 14:16
Ta remarque est judicieuse.
Mais mon cas particulier:

- frmMain ne contient que picImage.
- tout dialogue ne concerne que picImage (un peu à la mode de Google Sketchup)
- le dialogue "clavier" prend en compte, tant des fonctions "pan" et zoom (pour remédier à une souris absente), que la saisie de certaines informations en fonction du contexte.
- les actions non attendues sur le clavier sont éliminées.

Utiliser frmMain_KeyDown ou picImage_KeyDown serait donc fonctionnellement identique.

Espérant avoir satisfait la légitime curiosité.

Merci
3
F6DNH Messages postés 4 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 12:35
La solution est de positionner la propriété KeyPreview à True pour frmMain, de façon à ce qu'elle puisse intercepter les événements clavier avant les contrôles auxquels ils sont destinés.

Réponse obtenue sur un autre Forum (developpez.com)

Merci
0
F6DNH Messages postés 4 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 12:37
A marquer "résolu"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 févr. 2012 à 12:54
Ben...
Ou je n'ai rien compris,
ou ta réponse, FGDNH , ne mérite pas le "résolu" que tu réclames.
Peux-tu m'exposer comment tu distingues un évènement du frmMain de celui de la picturebox concernée ?
Je suis curieux.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 févr. 2012 à 13:00
Ah oui (pardon). Ton Keydown ne concerne que ta frmMain.
Mais dans ce cas :
1)je ne comprends pas que tu aies pu poser une telle question !
2) tu te prives de la faculté d'utiliser l'évènement KeyDown pour ta picturebox (sauf acrobatie supplémentaire : expression conditionnelle selon qu'elle a ou non le focus).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 févr. 2012 à 13:05
et chaque fois que, par inadvetance ou autre, l'utilisateur utilisera le clavier alors que sur la picturebox, il déclenchera ce qui se trouve dans l'évènement Keydown de ton frmMain !
Et utiliser le clavier à la place de la souris, cela se fait (notamment pour répondre à des problèmes physiologiques d'accessibilité).
(plutôt hasardeux, ce truc-là).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous