MenuStrip et item indexé

Thomas13012
Messages postés
35
Date d'inscription
samedi 12 septembre 2015
Statut
Membre
Dernière intervention
8 octobre 2016
- 12 sept. 2015 à 16:34
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
- 13 sept. 2015 à 11:50
Bonjour,

Je cherche sous VB.net 2013 à créer un menu via MenuStrip comportant un sous-menu sous forme de tableau (ex. mnuItem()), dont la dimension est incrémentée dynamiquement dans le code. Avec VB6 et les premières versions de VB.Net, il suffisait d'affecter la valeur 0 à la propriété Index. Mais cette propriété a disparu avec MenuStrip. Existe-t-il une propriété équivalente ?
Sinon comment créer un tableau dynamique de sous-menus ?

Merci pour votre aide.

René

4 réponses

cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
129
12 sept. 2015 à 16:56
Bonjour,

comme ceci:

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'création d'un nouveau menustrip
        Dim monmenu As New MenuStrip

        '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"
        'abonnement à l'événement click
        AddHandler itemOuvrir.Click, AddressOf item_Click
        menuitem.DropDownItems.Add(itemOuvrir)

        'ajout d'un autre sous-élément
        Dim itemQuitter As New ToolStripMenuItem
        itemQuitter.Text = "Quitter"
        '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)
    End Sub
End Class

0
Thomas13012
Messages postés
35
Date d'inscription
samedi 12 septembre 2015
Statut
Membre
Dernière intervention
8 octobre 2016
1
12 sept. 2015 à 18:32
Merci pour votre solution.
La propriété Index n'a donc plus d'équivalent ?
Cette méthode permet d'ajouter des éléments et des sous-éléments au menu par code. Mais je cherche à avoir un tableau dynamique associé à un élément, comme par exemple Ouvrir() que j'alimente pas code selon le contexte (Ouvrir(1) = "Ouvrir fichier" ; Ouvrir(2) = "Ouvrir dossier" ; et plus si le contexte s'y prête).
La propriété Index = 0 permettait de le faire très simplement avec le code suivant pour le menu dynamique mnuPS().
'Chargement d'un nouvel item de menu.
Load mnuPS(NbPS - 1)
mnuPS(NbPS - 1).Caption = NomItem(NbPS - 1)
mnuPS(NbPS - 1).Checked = False

Est-ce encore possible ?

Merci d'avance pour votre réponse

Thomas
0