Détecter le passage de la souris sur un MenuItem VB.Net 2003

gerbito Messages postés 39 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 20 octobre 2015 - 26 sept. 2008 à 16:01
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 3 oct. 2008 à 18:09
Bonjour,

J'ai un gros souci avec VB.Net 2003 : j'ai dérivé les classes MenuItem et MainMenu et je souhaite que mes composants ainsi créés changent d'aspect losque l'on passe dessus avec la souris.

Je n'ai pas trouvé dans la classe MenuItem quelquechose qui détecte le passage de la souris (pas de MouseMove ou dechoses de ce genre).

J'ai essayé, dans la méthode OnDrawItem que j'ai dérivée dans mon code, de repérer la présence du bit DrawItemState.Focus dans la propriété State du DrawItemEventArgs passé en paramètre à cette méthode, mais cela ne fonctionne pas.

J'ai créé un thread dans mon composant qui surveille la position de la souris dans le formulaire pour déclencher le dessin du composant, mais ca ne fonctionne guère plus. Quelqu'un aurait-il une idée pour résoudre ce petit souci ?

Merci de votre aide

3 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
26 sept. 2008 à 18:32
Salut,

Beuh?
Private Sub FichierToolStripMenuItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles FichierToolStripMenuItem.MouseEnter

Le contrôle MenuItem a bien les événements lié à la souris. D'ailleurs, ces événements dérivent de Control, impossible de ne pas les avoir donc.
(... ou alors il y a un truc que je n'ai pas compris)
0
gerbito Messages postés 39 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 20 octobre 2015
29 sept. 2008 à 09:28
Merci d'avoir répondu
Mais contrairement à ce que tu crois, le MenuItem n'hérite pas de Control, mais de Menu, Component et MarshalByRefObject. Il gère le clic mais pas le survol par la souris. Si c'était aussi simple, je n'aurais pas posé la question dans le forum. Ce que tu dis est sûrement vrai dans les versions postérieures, mais j'utilise VB 2003
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
3 oct. 2008 à 18:09
Effectivement, tu as raison, désolé d'avoir répondu à la va vite sans vérifier mes dires.
MenuItem n'hérite pas de Control, et n'implémente pas les événements souris.

Dans mon exemple, j'ai simplement créer un MenuStrip puis je lui ai ajouté des items: Après vérification, ces items ne sont pas des MenuItem mais des ToolStripMenuItem.
Le ToolStripMenuItem n'hérite toujours pas de Control, mais il gère les événements souris.

VB 2003 c'est le framework 2.0 sauf erreur? Dans ce cas, tu as le ToolStripMenuItem ou le ToolStripItem:
"Représente la classe de base qui gère des événements et la disposition pour tous les éléments que ToolStrip ou ToolStripDropDown peut contenir."

Espérant que cette piste te soit plus utile que mon message précédent.
0
Rejoignez-nous