MouseWheel et Keyboard events [Résolu]

F6DNH 4 Messages postés lundi 2 mai 2005Date d'inscription 3 février 2012 Dernière intervention - 3 févr. 2012 à 09:52 - Dernière réponse : F6DNH 4 Messages postés lundi 2 mai 2005Date d'inscription 3 février 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
F6DNH 4 Messages postés lundi 2 mai 2005Date d'inscription 3 février 2012 Dernière intervention - 3 févr. 2012 à 14:16
3
Merci
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

Merci F6DNH 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de F6DNH
F6DNH 4 Messages postés lundi 2 mai 2005Date d'inscription 3 février 2012 Dernière intervention - 3 févr. 2012 à 12:35
0
Merci
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
Commenter la réponse de F6DNH
F6DNH 4 Messages postés lundi 2 mai 2005Date d'inscription 3 février 2012 Dernière intervention - 3 févr. 2012 à 12:37
0
Merci
A marquer "résolu"
Commenter la réponse de F6DNH
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 3 févr. 2012 à 12:54
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 3 févr. 2012 à 13:00
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 3 févr. 2012 à 13:05
0
Merci
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
Commenter la réponse de ucfoutu

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.