Tabcontrol vertical

Contenu du snippet

Bon et bien en fait, aprés avoir bataillé de nombreuses heures sur des sites a la recherche d'un TabControl vertical ou d'un menu déroulant si vous préférez (cf screenshot) et n'ayant rien trouver de bien probant j'ai décidé de poster mon travail. Il n'y a pas de quoi s'affoler mais si comme moi vous devez faire un interface dont la majeure partie de la fenetre est occupé par une picturebox alors un menu déroulant vertical sera le bienvenue.

J'ai mis en place 4 panels sur ma form. Chaque panel s'ouvre via les boutons "btnNomDuBouton" et contient d'autres boutons qui engendre des actions (dans mon appli je charge des images, mais a vous de changez leurs fonctionnalités.

Voila deux click sur un même bouton ouvre et ferme le panel correspondant. Un click sur un bouton puis sur un autre ouvre le panel associé et ferme les autres.

N.B: la propriété dock des boutons commandant les panels est à régler en DockStyle.Top
Voila c tt

Source / Exemple :


#Region "MenuComposant"
        Public Sub MenuComposant(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnVerins.Click, btnPompes.Click, btnMoteurs.Click, btnDistributeurs.Click
            ' On récupère le nom du bouton et suivant sont état (true = ouvert; false = fermer)
            ' on affiche le menu.
            If sender.name = "btnVerins" Then
                If _btnEtat = False Then
                    Fermer_Pompe() : Fermer_Moteur() : Fermer_Distributeur()
                    Ouvrir_Verin()
                ElseIf _btnEtat = True Then
                    Fermer_Verin()
                End If

            ElseIf sender.name = "btnPompes" Then
                If _btnEtat2 = False Then
                    Fermer_Verin() : Fermer_Moteur() : Fermer_Distributeur()
                    Ouvrir_Pompe()
                ElseIf _btnEtat2 = True Then
                    Fermer_Pompe()
                End If

            ElseIf sender.name = "btnMoteurs" Then
                If _btnEtat3 = False Then
                    Fermer_Pompe() : Fermer_Verin() : Fermer_Distributeur()
                    Ouvrir_Moteur()
                ElseIf _btnEtat3 Then
                    Fermer_Moteur()
                End If

            ElseIf sender.name = "btnDistributeurs" Then
                If _btnEtat4 = False Then
                    Fermer_Pompe() : Fermer_Moteur() : Fermer_Verin()
                    Ouvrir_Distributeur()
                ElseIf _btnEtat4 = True Then
                    Fermer_Distributeur()
                End If
            End If
        End Sub

        Sub Ouvrir_Verin()
            ' On fixe l'état du bouton et l'image a charger.
            _btnEtat = True : btnVerins.Image = Image.FromFile("Images\_btnVerins_ON.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = _Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + Panel1.Height
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + btnMoteurs.Height
        End Sub
        Sub Fermer_Verin()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat = False : btnVerins.Image = Image.FromFile("Images\_btnVerins_OFF.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height - 1
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height - 1
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + btnMoteurs.Height - 1
        End Sub

        Sub Ouvrir_Pompe()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat2 = True : btnPompes.Image = Image.FromFile("Images\_btnPompes_ON.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = _Height2 : Panel2.Top = Panel1.Top + btnVerins.Height
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + Panel2.Height
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + Panel3.Height
        End Sub
        Sub Fermer_Pompe()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat2 = False : btnPompes.Image = Image.FromFile("Images\_btnPompes_OFF.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height - 1
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height - 1
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + btnMoteurs.Height - 1
        End Sub

        Sub Ouvrir_Moteur()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat3 = True : btnMoteurs.Image = Image.FromFile("Images\_btnMoteurs_ON.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height
            Panel3.Height = _Height3 : Panel3.Top = Panel2.Top + btnPompes.Height
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + Panel3.Height
        End Sub
        Sub Fermer_Moteur()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat3 = False : btnMoteurs.Image = Image.FromFile("Images\_btnMoteurs_OFF.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height - 1
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height - 1
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + btnMoteurs.Height - 1
        End Sub

        Sub Ouvrir_Distributeur()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat4 = True : btnDistributeurs.Image = Image.FromFile("Images\_btnDistributeurs_ON.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height
            Panel4.Height = _Height4 : Panel4.Top = Panel3.Top + btnMoteurs.Height
        End Sub
        Sub Fermer_Distributeur()
            ' On fixe l'état du bouton et l'image a charger
            _btnEtat4 = False : btnDistributeurs.Image = Image.FromFile("Images\_btnDistributeurs_OFF.bmp")
            ' On dispose les controls de la bonne manière.
            Panel1.Height = btnVerins.Height : Panel1.Top = btnVerins.Top
            Panel2.Height = btnPompes.Height : Panel2.Top = Panel1.Top + btnVerins.Height - 1
            Panel3.Height = btnMoteurs.Height : Panel3.Top = Panel2.Top + btnPompes.Height - 1
            Panel4.Height = btnDistributeurs.Height : Panel4.Top = Panel3.Top + btnMoteurs.Height - 1
        End Sub
#End Region

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.