Bonjour,
Je me trouve face à un petit problème très génant concernant le controle
MenuStrip du FrameWork 2.0 avec VB Express 2005
Je créé dynamiquement mes menus et des sous menu avec succès. Seulement les
clics des éléments étant en "Sous-menu" ne sont pas détectés avec la méthode
citée ci-dessous. Seulement les premiers éléments du menu "Fichier -
Edition - Affichage - Aide..." répondent. Idem si je les ajoute avec
"l'assistant / propriétés " de manière graphique dans le concepteur.
Private Sub BarreMenu_ItemClicked(ByVal sender As Object, ByVal e As
System.Windows.Forms.ToolStripItemClickedEventArgs) Handles
BarreMenu.ItemClicked
Select Case e.ClickedItem.Name
End Select
End Sub
Comment faire pour que cette procédure soit déclenchée avec les sous menus ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jonathan
Problème résolu, je donne la solution pour ceux qui ajoutent des menus dynamiquement par code comme cela et donc qui ne peuvent/veulent pas passer par 36 procédures déclenchées pour 36 sous menus :
//CREATION PERSO Private Sub CreerSousMenu(ByVal unTexte As String, ByVal uneInfoBulle As String, ByVal uneImage As String, ByVal unNom As String, ByVal unMenuItem As System.Windows.Forms.ToolStripMenuItem) Dim unSousMenu As System.Windows.Forms.ToolStripMenuItem unSousMenu = New System.Windows.Forms.ToolStripMenuItem unSousMenu.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText unSousMenu.Owner = BarreMenu unSousMenu.Name = unNom unSousMenu.Text = unTexte unSousMenu.Image = ImgList.Images.Item(uneImage) unSousMenu.Overflow = ToolStripItemOverflow.AsNeeded unSousMenu.ToolTipText = uneInfoBulle unMenuItem.DropDownItems.Add(unSousMenu) AddHandler unMenuItem.DropDownItemClicked, AddressOf CatchMenu_DropDownItemClicked End Sub
Il faut attraper l'évenement comme ceci :
Public Event CatchMenu As ToolStripItemClickedEventHandler Private Sub CatchMenu_DropDownItemClicked(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs) Select Case e.ClickedItem.Name //TRIER ICI LES PROCEDURES DECLENCHEES SELON LE SOUS MENU CLICKé End Select End Sub
Problème résolu, je donne la solution pour ceux qui ajoutent des menus
dynamiquement par code comme cela et donc qui ne peuvent/veulent pas passer
par 36 procédures déclenchées pour 36 sous menus :
//CREATION PERSO
Private Sub CreerSousMenu(ByVal unTexte As String, ByVal uneInfoBulle As
String, ByVal uneImage As String, ByVal unNom As String, ByVal unMenuItem As
System.Windows.Forms.ToolStripMenuItem)
Dim unSousMenu As System.Windows.Forms.ToolStripMenuItem
unSousMenu = New System.Windows.Forms.ToolStripMenuItem
unSousMenu.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
unSousMenu.Owner = BarreMenu
unSousMenu.Name = unNom
unSousMenu.Text = unTexte
unSousMenu.Image = ImgList.Images.Item(uneImage)
unSousMenu.Overflow = ToolStripItemOverflow.AsNeeded
unSousMenu.ToolTipText = uneInfoBulle
unMenuItem.DropDownItems.Add(unSousMenu)
AddHandler unMenuItem.DropDownItemClicked, AddressOf
CatchMenu_DropDownItemClicked
End Sub
Il faut attraper l'évenement comme ceci :
Public Event CatchMenu As ToolStripItemClickedEventHandler
Private Sub CatchMenu_DropDownItemClicked(ByVal sender As Object, ByVal e As
ToolStripItemClickedEventArgs)
Select Case e.ClickedItem.Name
//TRIER ICI LES PROCEDURES DECLENCHEES SELON LE SOUS MENU CLICKé
End Select
End Sub
Problème résolu, je donne la solution pour ceux qui ajoutent des menus dynamiquement par code comme cela et donc qui ne peuvent/veulent pas passer par 36 procédures déclenchées pour 36 sous menus :
//CREATION PERSO Private Sub CreerSousMenu(ByVal unTexte As String, ByVal uneInfoBulle As String, ByVal uneImage As String, ByVal unNom As String, ByVal unMenuItem As System.Windows.Forms.ToolStripMenuItem) Dim unSousMenu As System.Windows.Forms.ToolStripMenuItem unSousMenu = New System.Windows.Forms.ToolStripMenuItem unSousMenu.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText unSousMenu.Owner = BarreMenu unSousMenu.Name = unNom unSousMenu.Text = unTexte unSousMenu.Image = ImgList.Images.Item(uneImage) unSousMenu.Overflow = ToolStripItemOverflow.AsNeeded unSousMenu.ToolTipText = uneInfoBulle unMenuItem.DropDownItems.Add(unSousMenu) AddHandler unMenuItem.DropDownItemClicked, AddressOf CatchMenu_DropDownItemClicked End Sub
Il faut attraper l'évenement comme ceci :
Public Event CatchMenu As ToolStripItemClickedEventHandler Private Sub CatchMenu_DropDownItemClicked(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs) Select Case e.ClickedItem.Name //TRIER ICI LES PROCEDURES DECLENCHEES SELON LE SOUS MENU CLICKé End Select End Sub