1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| Public Class F_Menu
'Créez une Form nommée F_Menu comprenant un contrôle ToolTip appelé ToolTip1 et recopiez-y tout ce qui suit
'Créez un répertoire [monRepertoire] (c'est un exemple, vous pouvez mettre le nom que vous voulez)
'dans lequel vous mettrez les images des boutons du menu
Private Sub F_Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Dim repimages As String = [monRepertoire] '(chemin complet) 'supprimez le commentaire (' en début de ligne) pour la rendre opérationnelle
Dim maxBouton = 10
Dim LBouton As Integer = 60 'largeur d'un bouton
Dim HBouton As Integer = 60 'hauteur d'un bouton
Dim sepBouton As Integer = 1 'largeur de séparation entre deux boutons
Dim LB, HB, topB As Integer
'Remplacez les "inconnu.jpg" nécessaires par vos images
'Remplacez les "tip" par vos propres aides si souhaité
'P.S : Ce menu est prévu pour 10 boutons. Il est possible d'aller au-delà de 10 boutons en rajoutant le même nombre de valeurs dans les 3 tableaux et
'en modifiant la valeur de maxBouton ci-dessus sans oublier de rajouter les cas correspondants dans la procéure "clicBouton" (voir plus bas)
Dim imageBouton() As String = {"inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", _
"inconnu.jpg", "inconnu.jpg"}
Dim tipBouton() As String = {"tip0", "tip1", "tip2", "tip3", "tip4", "tip5", "tip6", "tip7", "tip8", "tip9"}
Dim visibiliteBouton() As Boolean = {True, True, True, True, True, True, True, True, True, True} 'True affiche le bouton, False ne l'affiche pas
'P.S : si vous mettez des valeurs à False dans le tableau ci-dessus, quelque soit leur emplacement, il n'y aura pas de trous dans le menu affiché.
'Les boutons restent collés les uns aux autres quelle que soit la configuration
Dim idx(maxBouton) As Integer
Dim nbBouton As Integer = 0
'Détermine le nombre de boutons qui seront affichés
For i As Integer = 0 To maxBouton - 1
If visibiliteBouton(i) Then
nbBouton += 1
idx(nbBouton - 1) = i
End If
Next
'Prépare la Form. Tous les paramètres ci-dessous sont modifiables à l'envie
'P.S : les dimensions de la Form s'adaptent au nombre de boutons affichés automatiquement
With Me
.AutoScaleMode = AutoScaleMode.None
.FormBorderStyle = FormBorderStyle.FixedToolWindow
.Size = New Size(6 + (nbBouton + 1) * sepBouton + nbBouton * LBouton, HBouton + 31)
.Location = New Point(10, 10)
.BackColor = Color.Black
.ForeColor = Color.PeachPuff
.Font = New Font("microsoft sans serif", 10, FontStyle.Regular)
.Text = "MENU"
.ControlBox = True
End With
'Ajoute les boutons à la Form. NE RIEN MODIFIER dans la boucle ci-dessous
For i As Integer = 0 To nbBouton - 1
Dim noBouton As Integer = idx(i)
Dim btn As New Button
btn.Name = "Button" & noBouton.ToString
If i <> nbBouton - 2 Then LB = LBouton : HB = HBouton : topB = 1 Else LB = LBouton : HB = HBouton / 2 : topB = HB
btn.Size = New Size(LB, HB)
btn.Location = New Point((i + 1) * sepBouton + (i * LB), topB)
btn.BackgroundImage = Image.FromFile(repImages & "\" & imageBouton(noBouton))
btn.BackgroundImageLayout = ImageLayout.Stretch
Me.ToolTip1.SetToolTip(btn, tipBouton(noBouton))
AddHandler CType(btn, Button).Click, AddressOf Me.clicBouton
Me.Controls.Add(btn)
Next
End Sub
Sub clicBouton(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Lance la procédure en fonction du bouton cliqué
'IMPORTANT!!! NE PAS OUBLIER de prévoir un cas pour la sortie du programme
Select Case sender.name.substring(6)
Case 0
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 1
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 2
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 3
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 4
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 5
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 6
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 7
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 8
'lancer ici la procédure correspondante si le bouton est opérationnel
Case 9
'lancer ici la procédure correspondante si le bouton est opérationnel
End Select
End Sub
End Class |
Partager