Bonjour à toutes et tous,

Je m'excuse par avance si cela a déjà été fait quelque part mais je vous présente...

Un petit programme sans prétention développé sous VS2010 et qui permet de créer un menu un peu plus fun que l'austère menu déroulant
En appliquant cette procédure à chacun des boutons, vous pouvez ainsi créer des sous-menus... etc...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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