none
Gerer un "menustrip" RRS feed

  • Question

  • Bonjour,

    J'aimerais comprendre comment marche les menu strip, j'ai vu qu'on peut faire des menus. Mais dans le code, comment je peut faire pour avoir un menu avec des sous -menu ?

    un peut comme quand on clic sur "fichier" dans un word

    merci d'avance

    jeudi 10 juillet 2014 09:12

Réponses

  • Il manque peut-être un 

    Me.Controls.Add(MenuStrip1)

    Essayez de trouver ce qui vous manque.


    Nimzozo, from France.

    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    jeudi 10 juillet 2014 21:40
  • Bonjour,

    Quelques notions de VB.NET vous manquent peut-être.

    Je vais reprendre au total, 

    cela donne : 

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Menu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    
            Menu1ToolStripMenuItem.Name = "Menu1"
            Menu1ToolStripMenuItem.Text = "Menu1"
            MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Menu1ToolStripMenuItem})
    
    
            SubMenu1ToolStripMenuItem.Name = "SubMenu1"
            SubMenu1ToolStripMenuItem.Text = "SubMenu1"
    
            AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf XXXXXToolStripMenuItem_Click
    
            SubMenu2ToolStripMenuItem.Text = "SubMenu2"
            SubMenu2ToolStripMenuItem.Name = "SubMenu2"
    
            AddHandler SubMenu2ToolStripMenuItem.Click, AddressOf XXXXXToolStripMenuItem_Click
    
            Menu1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {SubMenu1ToolStripMenuItem, SubMenu2ToolStripMenuItem})
    
            Me.MenuStrip1.Items.Add(Menu1ToolStripMenuItem)
    
            Me.MenuStrip1.Items.Add("toto")
        End Sub
    
        Private Sub XXXXXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse BEAUGRAND Kevin vendredi 11 juillet 2014 09:53
    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    vendredi 11 juillet 2014 09:31
  • Merci beaucoup !

    Voici la solution comlplète :

       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Menu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.Controls.Add(MenuStrip1)
            Menu1ToolStripMenuItem.Name = "Menu1"
            Menu1ToolStripMenuItem.Text = "Menu1"
            MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Menu1ToolStripMenuItem})
            SubMenu1ToolStripMenuItem.Name = "SubMenu1"
            SubMenu1ToolStripMenuItem.Text = "TEST"
            AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf OuvrirToolStripMenuItem_Click
            SubMenu2ToolStripMenuItem.Text = "SubMenu2"
            SubMenu2ToolStripMenuItem.Name = "SubMenu2"
            AddHandler SubMenu2ToolStripMenuItem.Click, AddressOf ExitToolStripMenuItem_Click
            Menu1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {SubMenu1ToolStripMenuItem, SubMenu2ToolStripMenuItem})
            Me.MenuStrip1.Items.Add(Menu1ToolStripMenuItem)
            Me.MenuStrip1.Items.Add("toto")
        End Sub
        Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub
        Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub

    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    vendredi 11 juillet 2014 10:00

Toutes les réponses

  • Bonjour, 

    Avez-vous cherché quelques tutoriels ?

    Celui-ci me semble pas mal : http://www.cs.trinity.edu/~thicks/Tutorials/Visual-Studio-Windows-App-Form-MenuStrip-Apps/Visual-Studio-Windows-App-Form-MenuStrip-Apps.html

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 10 juillet 2014 09:25
  • Il crée les menus directement dans l'interface.

    J'aimerais pouvoir faire la même chose mais dans le code, pour pouvoir changer mon interface en fonction de mes besoins

    MenuStrip1.Items.Add("TEST")

    Avec ça je peut créer un bouton dans la barre, mais j'aimerais aussi pouvoir rajouter des sous-menu en fin de  compte ...
    jeudi 10 juillet 2014 09:36
  • Bonjour, 

    En regardant le code du Designer après avoir ajouté les boutons par l'interface, on peut procéder par analogie comme suit :

    Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
    
    Me.Menu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    Me.SubMenu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    Me.SubMenu2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    
    Me.Menu1ToolStripMenuItem.Name = "Menu1"
    Me.Menu1ToolStripMenuItem.Text = "Menu1"
    Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Menu1ToolStripMenuItem})
    
    
    Me.SubMenu1ToolStripMenuItem.Name = "SubMenu1"
    Me.SubMenu1ToolStripMenuItem.Text = "SubMenu1"
    
    Me.SubMenu2ToolStripMenuItem.Text = "SubMenu2"
    Me.SubMenu2ToolStripMenuItem.Name = "SubMenu2"
    
    Me.Menu1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SubMenu1ToolStripMenuItem, Me.SubMenu2ToolStripMenuItem})
            
    Me.MenuStrip1.Items.Add(Me.Menu1ToolStripMenuItem)        
    


    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 10 juillet 2014 09:47
  • c'est du vb.net ?
    jeudi 10 juillet 2014 11:09
  • Absolument.

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 10 juillet 2014 12:09
  • Rien ne se créée avcec le code proposé ;x
    jeudi 10 juillet 2014 12:53
  • Pouvez-vous nous fournir un extrait de votre Code ?


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    jeudi 10 juillet 2014 13:01
  • bah, c'est juste votre code dans dans le "form_load"

    il n'y a rien d'autres

    jeudi 10 juillet 2014 13:22
  • Il manque peut-être un 

    Me.Controls.Add(MenuStrip1)

    Essayez de trouver ce qui vous manque.


    Nimzozo, from France.

    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    jeudi 10 juillet 2014 21:40
  • Yep ! bien vu, je pensais que vu que j'l'avais déjà mis sur l'interface, il prenait celui en compte.

    Parcontre, pour faire des actions sur les bouton crées, je suis bien obligé de passé par la non :

        Private Sub XXXXXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XXXXXToolStripMenuItem.Click
        End Sub

    Avec XXX le nom du bouton.

    Sauf que dans la parti qui commence par "Handles" il me dis :

    "La clause Handless requiert une variable WithEvents définie dans le type de conteneur  ou l'un de ces types de bases"

    ça veut dire que j'peut pas mettre des actions derrière mon sous menu ?

    vendredi 11 juillet 2014 07:16
  • Bonjour, 

    Il suffit d'ajouter simplement les events au moment de la génération. 

    La methode sera déclarée comme ceci : 

        Private Sub XXXXXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub

    Et l'abonnement à l'event se fait alors comme ceci : 

    AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf XXXXXToolStripMenuItem_Click

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    vendredi 11 juillet 2014 09:20
  •     Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf OuvrirToolStripMenuItem_Click
            MessageBox.Show("Clicked")
        End Sub

    Je dois faire ça ?

    Parce que si c'est ça, il me dis qu'il attends une instruction ...

    vendredi 11 juillet 2014 09:27
  • Bonjour,

    Quelques notions de VB.NET vous manquent peut-être.

    Je vais reprendre au total, 

    cela donne : 

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Menu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    
            Menu1ToolStripMenuItem.Name = "Menu1"
            Menu1ToolStripMenuItem.Text = "Menu1"
            MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Menu1ToolStripMenuItem})
    
    
            SubMenu1ToolStripMenuItem.Name = "SubMenu1"
            SubMenu1ToolStripMenuItem.Text = "SubMenu1"
    
            AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf XXXXXToolStripMenuItem_Click
    
            SubMenu2ToolStripMenuItem.Text = "SubMenu2"
            SubMenu2ToolStripMenuItem.Name = "SubMenu2"
    
            AddHandler SubMenu2ToolStripMenuItem.Click, AddressOf XXXXXToolStripMenuItem_Click
    
            Menu1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {SubMenu1ToolStripMenuItem, SubMenu2ToolStripMenuItem})
    
            Me.MenuStrip1.Items.Add(Menu1ToolStripMenuItem)
    
            Me.MenuStrip1.Items.Add("toto")
        End Sub
    
        Private Sub XXXXXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse BEAUGRAND Kevin vendredi 11 juillet 2014 09:53
    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    vendredi 11 juillet 2014 09:31
  • Merci beaucoup !

    Voici la solution comlplète :

       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Menu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Dim SubMenu2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
            Me.Controls.Add(MenuStrip1)
            Menu1ToolStripMenuItem.Name = "Menu1"
            Menu1ToolStripMenuItem.Text = "Menu1"
            MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Menu1ToolStripMenuItem})
            SubMenu1ToolStripMenuItem.Name = "SubMenu1"
            SubMenu1ToolStripMenuItem.Text = "TEST"
            AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf OuvrirToolStripMenuItem_Click
            SubMenu2ToolStripMenuItem.Text = "SubMenu2"
            SubMenu2ToolStripMenuItem.Name = "SubMenu2"
            AddHandler SubMenu2ToolStripMenuItem.Click, AddressOf ExitToolStripMenuItem_Click
            Menu1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {SubMenu1ToolStripMenuItem, SubMenu2ToolStripMenuItem})
            Me.MenuStrip1.Items.Add(Menu1ToolStripMenuItem)
            Me.MenuStrip1.Items.Add("toto")
        End Sub
        Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub
        Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("Clicked")
        End Sub

    • Marqué comme réponse Tom57000 vendredi 11 juillet 2014 10:00
    vendredi 11 juillet 2014 10:00
  • Bon courage pour la suite !

    Nimzozo, from France.

    vendredi 11 juillet 2014 11:20