Remplir un MenuStrip dynamiquement

Résolu
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
- 4 déc. 2016 à 22:03
Whismeril
Messages postés
17326
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
- 15 avril 2018 à 12:41
Bonsoir,
J'ai un MenuStrip est je veux le remplir dynamiquement (Créer des items (ToolStripMenuItem))
je n'ai pas trouvé sur le net ce que je veux et j'avais la méthode pour créer et remplir un TabControl dynamiquement, ce n'été pas difficile d'utiliser cette méthode pour le MenuStrip, voici le code :
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim TypesToolStripMenuItem As New ToolStripMenuItem()
TypesToolStripMenuItem.Name = "Type1"
TypesToolStripMenuItem.Text = "Type 1"
TypesToolStripMenuItem.Font = New Font("Georgia", 12)
MenuStrip1.Items.Add(TypesToolStripMenuItem)
AddHandler TypesToolStripMenuItem.Click, AddressOf TypesToolStripMenuItem_Click
End Sub
Private Sub TypesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

j'arrive a créer un ToolStripMenuItem et lui attribuer une action qui va être exécuté si je clique sur lui
mais si je veux créer plusieurs (le nombre n'est pas définie), comment attribuer des actions à chaque item ?
merci pour vos réponses futures et bonne soirée

8 réponses

cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
4 déc. 2016 à 22:26
Bonjour,

Voici un exemple avec 1 button:

Public Class Form1
    Dim monmenu As New MenuStrip

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        'ajout d'un élément
        Dim menuitem As New ToolStripMenuItem
        menuitem.Text = "Fichier"

        'ajout d'un sous-élément
        Dim itemOuvrir As New ToolStripMenuItem
        itemOuvrir.Text = "Ouvrir"
        itemOuvrir.Tag = "0"
        'abonnement à l'événement click
        AddHandler itemOuvrir.Click, AddressOf item_Click
        menuitem.DropDownItems.Add(itemOuvrir)

        'ajout d'un sous-élément
        Dim itemEnregistrer As New ToolStripMenuItem
        itemEnregistrer.Text = "Enregistrer"
        itemEnregistrer.Tag = "1"
        'abonnement à l'événement click
        AddHandler itemEnregistrer.Click, AddressOf item_Click
        menuitem.DropDownItems.Add(itemEnregistrer)

        'ajout d'un autre sous-élément
        Dim itemQuitter As New ToolStripMenuItem
        itemQuitter.Text = "Quitter"
        itemQuitter.Tag = "2"
        'abonnement à l'événement click
        AddHandler itemQuitter.Click, AddressOf item_Click
        menuitem.DropDownItems.Add(itemQuitter)

        'ajout de l'élément au menustrip
        monmenu.Items.Add(menuitem)

        'ajout du menustrip au formulaire
        Me.Controls.Add(monmenu)
    End Sub
    Private Sub item_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim monitem As ToolStripItem = DirectCast(sender, ToolStripItem)
        MessageBox.Show(monitem.Text)
        CType(monmenu.Items(0), ToolStripMenuItem).DropDownItems(1).AllowDrop = True
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim c As ToolStripMenuItem
        c = CType(CType(monmenu.Items(0), ToolStripMenuItem).DropDownItems.Add("Nouveau menu"), ToolStripMenuItem)
        c.Name = "Nouveau menu"
        For lcoount As Integer = 1 To 2
            Dim innerItem As New ToolStripMenuItem()
            innerItem.Text = "Monmenu" & lcoount
            innerItem.Name = lcoount.ToString
            'abonnement à l'événement click
            AddHandler innerItem.Click, AddressOf item_Click
            c.DropDownItems.Add(innerItem)
        Next
        ' CType(monmenu.Items(0), ToolStripMenuItem).DropDownItems(1).Visible = False
    End Sub
End Class


a toi de l'adapter suivant tes besoins
1
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
4 déc. 2016 à 22:55
Bonsoir cs_Le Pivert,
Merci c'est ce que je voulais et en plus c'est très bien expliqué, sérieux tu m'enlève une épine du pied.
si je veux qu'il affiche le contenue d'une ListBox par exemple (je précise que le nombre des items de la ListBox est le même que celui du Menustrip
et aussi je veux par exemple si je supprimer un item de la ListBox le ToolStripMenuItem lié a ce item (item de la ListBox ) sera aussi supprimer
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

5 déc. 2016 à 08:48
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 > cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022

5 déc. 2016 à 10:01
Salut cs_Le Pivert
Merci
je vais jeter un œil au lien que tu m'a donné merci
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Modifié par cs_JMO le 4/12/2016 à 22:43
Bonsoir

Regarde du côté AddHandler

Exemple:
 Dim menustripmain As New MenuStrip
 Dim menustripmain_itemmenu As New ToolStripMenuItem
 Dim menustripmain_itemviewappweb As ToolStripMenuItem

 ' Création dynamique du menu et de son arborescence
 menustripmain_itemmenu.Text = "Menu"
 menustripmain_itemmenu.Font = New System.Drawing.Font("Segoe UI", 10.0!)

 ' Création du menu "Consultation Web Consignes"
 menustripmain_itemviewappweb = CType(CType(menustripmain_itemmenu, ToolStripMenuItem).DropDownItems.Add("Consultation Web Consignes"), ToolStripMenuItem)
 menustripmain_itemviewappweb.Name = "ViewWEB"
 menustripmain_itemviewappweb.Text = "Consultation Web Consignes"
 AddHandler menustripmain_itemviewappweb.Click, AddressOf ToolStripSplitButtonOpenLinkWeb_ButtonClick

 ' Ajout des éléments au menustrip Menu
  menustripmain.Items.Add(menustripmain_itemmenu)

 ' Ajout du menustripmain au formulaire
 Me.Controls.Add(menustripmain)


 '#####################################################################################
 '# ToolStripSplitButtonOpenLinkWeb pour ouvrir le lien Web des Consignes
 '#####################################################################################
 Private Sub ToolStripSplitButtonOpenLinkWeb_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles toolStripSplitButtonOpenLinkWeb.ButtonClick
     Process.Start("http://......")
 End Sub

jean-marc

Désolé cs_Le Pivert (bonsoir) je n'avais pas vu ta proposition.
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
Modifié par Karin.code le 4/12/2016 à 23:06
Bonsoir cs_JMO,
Merci de m'avoir répondu
je ne sais pas si j'ai bien compris mais je crois que le problème de ce code est que les deux ToolStripMenuItem ont la même action, non?
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

Modifié par cs_JMO le 4/12/2016 à 23:14
Bonsoir Karin,

Non, j'ai copié/collé des bouts d'une appli où je créé un menu, puis des items et subtitems.
Le code proposé par Le Pivert est plus explicite que le mien !

        ' Ajout d'un élément au menustrip
menustripmain_itemreload.Name = "Reload"
menustripmain_itemreload.Text = "Relancer"
menustripmain_itemreload.Font = New System.Drawing.Font("Segoe UI", 10.0!)
menustripmain.Items.Add(menustripmain_itemreload)
' Abonnement à l'événement click
AddHandler menustripmain_itemreload.Click, AddressOf MenuMain_Item_Click

' Ajout d'un élément au menustrip
menustripmain_itemexit.Name = "Quitter"
menustripmain_itemexit.Text = "Quitter"
menustripmain_itemexit.Font = New System.Drawing.Font("Segoe UI", 10.0!)
menustripmain.Items.Add(menustripmain_itemexit)
' Abonnement à l'événement click
AddHandler menustripmain_itemexit.Click, AddressOf MenuMain_Item_Click
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 > cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018

4 déc. 2016 à 23:48
Bonsoir cs_JMO,
l'essentiel pour moi est que tu à essayer de m'aider, ça me fait plaisir merci
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
Modifié par cs_Le Pivert le 5/12/2016 à 09:41
Pas de problème, plus on est de fous plus on rit
LOL

Ce message s'adresse à cs_JMO, avec leur systeme on ne voit pas à qui l'on s'adresse!

@+ Le Pivert
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
4 déc. 2016 à 22:51
bonsoir Karin.code
Suffit de leur donner à chacun un nom différent

De plus attention

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim TypesToolStripMenuItem As New ToolStripMenuItem() ' point 1
TypesToolStripMenuItem.Name = "Type1"
TypesToolStripMenuItem.Text = "Type 1"
TypesToolStripMenuItem.Font = New Font("Georgia", 12)
MenuStrip1.Items.Add(TypesToolStripMenuItem)
AddHandler TypesToolStripMenuItem.Click, AddressOf TypesToolStripMenuItem_Click ' point 2
End Sub


1) Tu appelles ta commande de menu avec un nom presque similaire au type menu : risque de se perdre les pinceaux ( j'ai failli me tromper d'ailleurs) . Là c'est toi qui donne le nom : autant lui donner un nom en français c'est plus parlant ( regarde mon exemple)
2) Le "AddHandler" est incorrect
- le premier paramètre est l'action sur le contrôle
- le second paramètre est une simple Sub que le programme va exécuter une fois l'évènement déclenché

tu devrais faire
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ElementMenu As New ToolStripMenuItem() ' nouveau élément menu
ElementMenu.Name = "Enregistrer"
ElementMenu.Text = "Enregistrer"
ElementMenu.Font = New Font("Georgia", 12)
MenuStrip1.Items.Add(ElementMenu)
AddHandler Enregistrer.Click, AddressOf Enregistrement ' adresse Sub à lier à cet évènement

Dim ElementMenu As New ToolStripMenuItem() ' nouveau élément menu
ElementMenu.Name = "Fermer"
ElementMenu.Text = "Fermer"
ElementMenu.Font = New Font("Georgia", 12)
MenuStrip1.Items.Add(ElementMenu)
AddHandler Fermer.Click, AddressOf Fermeture ' adresse Sub à lier à cet évènement
End Sub

Private Sub Enregistrement()
' le code d'enregistrement
End Sub

Private Sub Fermeture()
' le code pour fermer
End Sub
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
4 déc. 2016 à 23:06
Bonsoir vb95
Merci de m'avoir répondu
Je crois que tu m'a mal compris, je ne connais pas le nombre de ToolStripMenuItem que je vais créer (Par exemple Type 1, Type 2, Type 3, Type 4 ...etc)
avec ton code je peux créer que deux, non?
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

4 déc. 2016 à 23:15
bonsoir Karin.code
Là j'en ai mis deux
Mais libre à toi d'en mettre 20 ou 30 ou 200 ( mais alors là le clavier va chauffer)
Ou alors passer par un tableau contenant les caractéristiques de chaque élément du menu et avec une boucle créer tous les menus d'un coup
En plus que vient faire la listbox dont tu parles ? Surtout qu'elle aura toujours le même nombre d'éléments que ton menu
Et si c'était la listbox qui servait de "menu" ?
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

4 déc. 2016 à 23:45
Bonsoir vb95
Désolé si je n'ai pas expliquer mon projet
en faite je fais des calculs et si le résultat égale a une certaine valeur, par exemple
si :
Résultat égale 0,5 -> état : Faible
Résultat égale 1,5 -> état : Moyenne ( pas encore prés)
Résultat égale 2,5 -> état : Bien (l'échantillon acceptable)
Résultat égale 5,5 -> état : Très bien (C'est le bon échantillon )
...etc
si je lance le premier calcul et le résultat est égal à 0,5
le string (état : Faible) sera enregistrer dans la ListBox, en même temps un ToolStripMenuItem sera crée dans le MenuStrip avec un nom "Type 1", si je clique dessus un message s'affiche avec le contenu de l'Items(0) de la ListBox

si je lance le premier calcul et le résultat est égal à 2,5
le string (état : Bien (l'échantillon acceptable)) sera enregistrer dans la ListBox, en même temps un ToolStripMenuItem sera crée dans le MenuStrip avec un nom "Type 2", si je clique dessus un message s'affiche avec le contenu de l'Items(1) de la ListBox
ainsi de suite
j'utilise la ListBox pour sauvegarder les résultats, je ne peut pas faire MessageBox.Show(Résultat) car le résultat change a chaque calcul
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
Modifié par vb95 le 5/12/2016 à 00:23
Salut Karin.code
Si je comprends bien tu fais X calculs ( cela peut être 20 comme 200)
A chaque calcul correspond
- un numéro ( Calcul n° 1, Calcul n°2, etc ......
- un résultat qui est une valeur numérique
- une appréciation qui est une chaine de caractères


somme toute un tableau comme ceci
chaque fois que tu fais un calcul on ajoute une ligne

Cela me paraît plus simple que tes menus et listbox
tout en sachant que sur une ligne tu peux afficher d'autres informations ou même effacer la ligne
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
5 déc. 2016 à 08:32
Salut vb95,

merci pour la proposition
en faite j'ai déjà pensé a ce choix, c'est vrais que c'est plus facile et plus pratique d'utiliser un tableau, mais pour ce projet j'ai vraiment envie d'utiliser un MenuStrip.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

5 déc. 2016 à 12:19
Soit
Mais ce n'est nullement la finalité d'un MenuStrip
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
Modifié par Karin.code le 5/12/2016 à 09:59
Bonjour
j'ai fait quelque recherche ce matin et la 1er solution que j'ai trouvé (je l'ai intégré au code de cs_Le Pivert) est :
Public Class Form1
Dim monmenu As New MenuStrip
Dim i As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ajout d'un élément
Dim menuitem As New ToolStripMenuItem
menuitem.Text = "Fichier"
'ajout d'un sous-élément
Dim itemOuvrir As New ToolStripMenuItem
itemOuvrir.Text = "Ouvrir"
itemOuvrir.Tag = "0"
'abonnement à l'événement click
AddHandler itemOuvrir.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemOuvrir)
'ajout d'un sous-élément
Dim itemEnregistrer As New ToolStripMenuItem
itemEnregistrer.Text = "Enregistrer"
itemEnregistrer.Tag = "1"
'abonnement à l'événement click
AddHandler itemEnregistrer.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemEnregistrer)
'ajout d'un autre sous-élément
Dim itemQuitter As New ToolStripMenuItem
itemQuitter.Text = "Quitter"
itemQuitter.Tag = "2"
'abonnement à l'événement click
AddHandler itemQuitter.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemQuitter)
'ajout de l'élément au menustrip
monmenu.Items.Add(menuitem)
'ajout du menustrip au formulaire
Me.Controls.Add(monmenu)
End Sub
Private Sub item_Click(ByVal sender As Object, ByVal e As EventArgs)
ListBox1.SelectedIndex = MenuStrip1.Items.IndexOf(DirectCast(sender, ToolStripItem))
MessageBox.Show(ListBox1.SelectedItem)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim element As New ToolStripMenuItem()
element.Name = "element" & i
element.Text = "element " & i
AddHandler element.Click, AddressOf item_Click
monmenu.Items.Add(element)
i = i + 1
End Sub
End Class

quand je clique sur le 1er élément ça affiche l'item (1) de la ListBox
quand je clique sur le 2eme élément ça affiche l'item (2) de la ListBox
ainsi de suite
mais le problème est que :
quand je clique sur un sous élément rien ne s'affiche
la 2eme solution que j'ai trouvé est :
Public Class Form1
Dim monmenu As New MenuStrip
Dim i As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ajout d'un élément
Dim menuitem As New ToolStripMenuItem
menuitem.Text = "Fichier"
'ajout d'un sous-élément
Dim itemOuvrir As New ToolStripMenuItem
itemOuvrir.Text = "Ouvrir"
itemOuvrir.Tag = "0"
'abonnement à l'événement click
AddHandler itemOuvrir.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemOuvrir)
'ajout d'un sous-élément
Dim itemEnregistrer As New ToolStripMenuItem
itemEnregistrer.Text = "Enregistrer"
itemEnregistrer.Tag = "1"
'abonnement à l'événement click
AddHandler itemEnregistrer.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemEnregistrer)
'ajout d'un autre sous-élément
Dim itemQuitter As New ToolStripMenuItem
itemQuitter.Text = "Quitter"
itemQuitter.Tag = "2"
'abonnement à l'événement click
AddHandler itemQuitter.Click, AddressOf item_Click
menuitem.DropDownItems.Add(itemQuitter)
'ajout de l'élément au menustrip
monmenu.Items.Add(menuitem)
Me.Controls.Add(monmenu)
End Sub
Private Sub item_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim item As ToolStripItem = sender
ListBox1.SelectedIndex = item.Owner.Items.IndexOf(item)
MessageBox.Show(ListBox1.SelectedItem)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim element As New ToolStripMenuItem()
element.Name = "element" & i
element.Text = "element " & i
AddHandler element.Click, AddressOf item_Click
monmenu.Items.Add(element)
i = i + 1
End Sub
End Class

cette méthode fonction pour les éléments et sous éléments
supposant qu'il y a 5 éléments et dans le 3eme élément il y a 4 sous éléments
quand je clique sur le 1er élément ça affiche l'item (1) de la ListBox
quand je clique sur le 2eme élément ça affiche 'item (2) de la ListBox
quand je clique le 1er sous élément du 3eme élément ça affiche l'item (1) de la ListBox
quand je clique le 2eme sous élément du 3eme élément ça affiche l'item (2) de la ListBox
ainsi de suite
ce n'est pas ce que je veux, moi je veux que ça s'affiche par ordre de création c-à-dire :
le 1er élément du MenuStrips affiche l'item (1) de la ListBox
le 2eme élément du MenuStrips affiche l'item (2) de la ListBox
le 1er sous élément du 3eme élément du MenuStrips affiche l'item (3) de la ListBox
le 2eme sous élément du 3eme élément du MenuStrips affiche l'item (4) de la ListBox
le 3eme sous élément du 3eme élément du MenuStrips affiche l'item (5) de la ListBox
le 4eme sous élément du 3eme élément du MenuStrips affiche l'item (6) de la ListBox
le 4eme élément du MenuStrips affiche l'item (4) de la ListBox
le 5eme élément du MenuStrips affiche l'item (5) de la ListBox
je sais que je demande beaucoup, mais je fais des recherches de mon côté, je n'attend pas que la solution vient par magie
Je vais continuer à rechercher d'autre solution
merci pour votre aide
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
Modifié par cs_Le Pivert le 5/12/2016 à 11:38
Essaie ceci:


 Private Sub item_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim index As Integer
        index = monmenu.Items.IndexOf(DirectCast(sender, ToolStripItem))
        ListBox1.SelectedIndex = index - 1
        MessageBox.Show(CStr(ListBox1.SelectedItem)) 'nom
        MessageBox.Show(CStr(ListBox1.SelectedIndex)) 'index
    End Sub
    Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim element As New ToolStripMenuItem()
        element.Name = "element" & i
        element.Text = "element " & i
        AddHandler element.Click, AddressOf item_Click
        monmenu.Items.Add(element)
        ListBox1.Items.Add(element.Text)
        i = i + 1
    End Sub


apprends toi a mettre
Option Strict On
et
Option Explicit On
pour corriger les erreurs
@+ Le Pivert
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
5 déc. 2016 à 12:27
Salut cs_Le Pivert,

C'est déjà un problème réglé Merci
désolé je n'ai pas expliquer pourquoi je veux les sous éléments

Comme le montre l'image si je crée beaucoup d'éléments certain d'entre eux ne s'affiche pas car la taille du MenuStrip est limité
je voulais s'avoir si c'est possiblede faire quelque chose comme ça

si les élements ne peuvent plus être affiché alors il seront créé dans un sous menu ou quelque chose comme ça
cet aspect là est présent dans beaucoup de logiciel (par exemple Microsoft, des navigateur , même dans visual basic express 2010)
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
Modifié par vb95 le 5/12/2016 à 14:18
bonsoir Karin.code
Si cela s'appelle un menu strip c'est comma au restaurant
Dans le menu tu as les entrées, les plats de résistances, les fromages, les boissons, etc .....
Ensuite dans un tableau tu présentes les entrées par exemple en cliquant sur "Entrées"
toi là tu mets carrément toutes les entrées dans le Menu puis tous les fromages dans le menu : je plains ton client pour lire ta carte lol

De plus dans un menu informatique chaque élément a une fonction bien distincte : Ouvrir un fichier, enregistrer un fichier, fermer l'application
Chaque élément de ce menu est unique ( à part quelques exceptions)
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

5 déc. 2016 à 15:18
Et pour compléter ce qu'a dit VB95 que je salue. Le but de la programmation c'est de faire un programme le plus simple possible dans la mesure du cahier des charges. Comme le dit si souvent ucfoutu, cela commence avec un papier et un crayon.
Pourquoi faire compliqué quand on peut faire simple!!!
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022

Modifié par vb95 le 5/12/2016 à 17:07
Bonjour cs_Le Pivert
Je plussoie ton complément
Sans phase d'analyse on va droit dans le mur !
Salutations à toi
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

Modifié par Karin.code le 5/12/2016 à 19:23
Salut cs_Le Pivert et vb95
je sais ça parait insensé, mais j'aurais bien aimé utiliser un MenuStrip comme je l'ai mentionné plus haut
http://codes-sources.commentcamarche.net/forum/affich-10071611-remplir-un-menustrip-dynamiquement#20
ma form est déjà surchargé (il y a beaucoup de contrôle), je voulais éviter d'utiliser plus de contrôle et éviter d'agrandir la form plus qu'elle est déjà, je vais essayer de faire avec et utiliser une ListView comme l'a suggéré vb95
http://codes-sources.commentcamarche.net/forum/affich-10071611-remplir-un-menustrip-dynamiquement#12
Merci beaucoup à tous ceux qui m'ont aidé
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

5 déc. 2016 à 21:08
Salut Karin.code
tu as écrit : "je sais ça parait insensé, mais j'aurais bien aimé utiliser un MenuStrip comme je l'ai mentionné plus haut "
Le problème c'est qu'un MenuStrip n'est pas fait pour cela !
C'est un peu comme si tu voulais enfoncer un clou avec une aiguille à tricoter !
si tu penses que ce post peut être fermé fais-le !
Ouvre un nouveau sujet de discussion si tu as une difficulté avec le passage de ton projet avec une listview
0
Bonjour cs_Le Pivert, j'ai un problème de compréhension fondamental au sujet des objets. Le code de la ligne
c = CType(CType(monmenu.Items(0), ToolStripMenuItem).DropDownItems.Add("Nouveau menu"), ToolStripMenuItem)
contient une conversion de monmenu.Items(0) à ToolStripMenuItem.

Avec un breakpoint immédiatement après la ligne ci-dessus j'obtiens dans l'Immediate Window:

?monmenu.Items(0).gettype.tostring
"System.Windows.Forms.ToolStripMenuItem"

Si monmenu.Items(0) est reconnu comme un ToolStripMenuItem pourquoi est-il nécessaire de faire la conversion?

Je ne conteste pas la validité de votre code (il fonctionne) mais j'aimerais comprendre.

merci
0
Whismeril
Messages postés
17326
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
596
15 avril 2018 à 10:12
Alors c'est pas la peine non plus de poster en double
http://codes-sources.commentcamarche.net/forum/affich-10084759-question-a-lepivert#3

Comme je te l'ai dit dans l'autre sujet, cela doit marcher sans les conversions.
As tu au moins essayé?

Je t'ai aussi demandé d'utilisation de la coloration syntaxique.
0
Whismeril
Messages postés
17326
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
596
15 avril 2018 à 12:41
Donc dans l'autre sujet tu dis
Pour ce qui est de ta réponse j'ai écrit dans la fenêtre immédiate
?monmenu.Items(0). et l'intellisence ne propose pas DropDownItems apres le point.


Avec le code complet, on voit que
monmenu est un MenuStrip cf message 1, ligne de code n°2
Dans la doc en ligne https://msdn.microsoft.com/fr-fr/library/system.windows.forms.menustrip(v=vs.110).aspx
On voit que Items est du type ToolStripItemCollection qui peut contenir tous les types dérivés de ToolStripItem, y compris ToolStripMenuItem.

Du coup, si tu places un ToolStripMenuItem, il est accepté car, un ToolStripMenuItem est un ToolStripItem, mais un ToolStripItem n'est pas un ToolStripMenuItem.
Donc quand tu prends l'Item 0, c'est un ToolStripItem, pour accéder aux propriétés spécifiques du ToolStripMenuItem, il faut le caster, c'est le rôle de l'intrusion CType.

Si tu ne comprends pas bien, cherche des cours sur l'héritage et le polymorphisme.
J'en ai écrit un
0