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
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.