F6DNH
Messages postés4Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 3 février 2012
-
3 févr. 2012 à 09:52
F6DNH
Messages postés4Date d'inscriptionlundi 2 mai 2005StatutMembreDerniè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 ?
F6DNH
Messages postés4Date d'inscriptionlundi 2 mai 2005StatutMembreDerniè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.
F6DNH
Messages postés4Date d'inscriptionlundi 2 mai 2005StatutMembreDerniè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)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 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