Je possède ce MenuStrip
gauche désamarré dans un formulaire, avec LayoutStyle = VerticalStackWithOverflow
, et je l'ai écrit ces deux gestionnaires d'événements pour faire ses articles montrent leur texte que lorsque l'utilisateur déplace la souris sur la MenuStrip:Comment détecter quand un objet MenuStrip étend l'un de ses éléments à ses sous-éléments?
Private Sub MenuStripMainMenu_MouseEnter(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MouseEnter
For Each c In MenuStripMainMenu.Items.OfType(Of ToolStripItem)
c.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
Next
End Sub
Private Sub MenuStripMainMenu_MouseLeave(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MouseLeave, MenuStripMainMenu.LostFocus
For Each c In MenuStripMainMenu.Items.OfType(Of ToolStripItem)
c.DisplayStyle = ToolStripItemDisplayStyle.Image
Next
End Sub
Bien que cela fonctionne ok, certains des MenuItems ont leur propre MenuItems (comme un arbre de choix) et quand l'utilisateur déplace la souris de la racine MenuStrip aux options, le MenuStrip rétrécit à son mode "icône seulement", de sorte que le menu étendu semble maladroit.
Y at-il un moyen de détecter quand un MenuStrip étend l'un de ses éléments à ses sous-éléments, afin que je puisse accrocher les routines de réglage appropriées?
Merci beaucoup!
EDIT
Ceci est DonBoitnott's answer porté à VB.NET, je seulement ajouté un suivi en MenuDeactivate
gestionnaire, à rétrécir la bande en arrière à droite après que des images menu est désactivé:
Private MenuStripMainMenu_activated As Boolean = False
Private Sub MenuStripMainMenu_MenuActivate(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MenuActivate
MenuStripMainMenu_activated = True
End Sub
Private Sub MenuStripMainMenu_MenuDeactivate(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MenuDeactivate
MenuStripMainMenu_activated = False
MenuStripMainMenu_MouseLeave(sender, e)
End Sub
Private Sub MenuStripMainMenu_MouseEnter(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MouseEnter
For Each c In MenuStripMainMenu.Items.OfType(Of ToolStripItem)
c.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
Next
End Sub
Private Sub MenuStripMainMenu_MouseLeave(sender As Object, e As EventArgs) Handles MenuStripMainMenu.MouseLeave
If Not MenuStripMainMenu_activated Then
For Each c In MenuStripMainMenu.Items.OfType(Of ToolStripItem)
c.DisplayStyle = ToolStripItemDisplayStyle.Image
Next
End If
End Sub
Parfait! Je viens d'ajouter un suivi dans le gestionnaire 'MenuDeactivate', pour rétrécir la bande aux images juste après la désactivation du menu. J'ai édité mon post pour ajouter la version de VB.NET. Merci beaucoup! – VBobCat