Bonjour,

J'aimerai avoir de l'aide sur un problème relatif à un ContextMenuStrip.
Il est pré-existant sur le formulaire, mais sans items dedans. Les premiers items sont ajoutés par du code et contiennent chacun le texte d'un des 4 boutons présents sur le formulaire.
Par la suite des subitems sont ajoutés a ceux existants.

Lorsque j'utilise l'event ItemClicked cela fonctionne très bien pour les premiers items (ceux avec les noms des boutons), mais rien ne se passe lorsque je clic sur n'importe lequel des subitems.

Quelqu'un peut-il m'aider à comprendre pourquoi svp ?

Voici le code d'ajouts des premiers items :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
  Accueil.CMSNotify.Items.Add(Accueil.Btn01.Text)
        Accueil.CMSNotify.Items.Add(Accueil.Btn02.Text)
        Accueil.CMSNotify.Items.Add(Accueil.Btn03.Text)
        Accueil.CMSNotify.Items.Add(Accueil.Btn04.Text)
Et le code d'ajout des subitems dont le text est récupéré depuis une database, ainsi que poiur l'icone associée au subitem :

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
 
'On rafraîchit également le menu contextuel sur l'icône de l'application réduite
        Dim RequeteCMS As String = "SELECT * FROM PROGRAMMES"
        Dim CommandeCMS As OleDbCommand = New OleDbCommand(RequeteCMS, Connexion)
 
        Dim ImageMenu As IO.MemoryStream
 
        Try
 
            Connexion.Open()
 
            Dim ReaderCMS As OleDbDataReader = CommandeCMS.ExecuteReader()
 
            While ReaderCMS.Read()
 
                'Récupération et écriture du fichier image pour illustrer le programme
                Dim RequeteImage As String = "SELECT Image,NomImage FROM PROGRAMMES WHERE ID=" & ReaderCMS(0)
                Dim CommandeImage As OleDbCommand = New OleDbCommand(RequeteImage, Connexion)
                Dim FichierBytes As Byte()
                Dim NomDuFichier As String = ""
 
                Using sdr As OleDbDataReader = CommandeImage.ExecuteReader
 
                    sdr.Read()
 
                    FichierBytes = DirectCast(sdr(0), Byte())
 
                    NomDuFichier = sdr(1)
 
                End Using
 
                'On reconstruit l'image associée
                Try
 
                    ImageMenu = New IO.MemoryStream(FichierBytes)
 
                Catch ex As Exception
 
                    MsgBox("Une erreur est survenue durant la récupération de l'image d'illustration du programme !" & vbCrLf & vbCrLf & ex.Message, vbOKOnly + vbCritical, "MyLauncher")
                    Exit Sub
 
                End Try
 
                If ReaderCMS(5) = Accueil.Btn01.Text Then
 
                    Dim Entry As New ToolStripMenuItem
                    Entry = Accueil.CMSNotify.Items(0)
 
                    Entry.DropDownItems.Add(ReaderCMS(1), Image.FromStream(ImageMenu))
 
                    ImageMenu.Close()
 
                 ElseIf ReaderCMS(5) = Accueil.Btn02.Text Then
 
                    Dim Entry As New ToolStripMenuItem
                    Entry = Accueil.CMSNotify.Items(1)
 
                    Entry.DropDownItems.Add(ReaderCMS(1), Image.FromStream(ImageMenu))
 
                    ImageMenu.Close()
 
                ElseIf ReaderCMS(5) = Accueil.Btn03.Text Then
 
                    Dim Entry As New ToolStripMenuItem
                    Entry = Accueil.CMSNotify.Items(2)
 
                    Entry.DropDownItems.Add(ReaderCMS(1), Image.FromStream(ImageMenu))
 
                    ImageMenu.Close()
 
                ElseIf ReaderCMS(5) = Accueil.Btn04.Text Then
 
                    Dim Entry As New ToolStripMenuItem
                    Entry = Accueil.CMSNotify.Items(3)
 
                    Entry.DropDownItems.Add(ReaderCMS(1), Image.FromStream(ImageMenu))
 
                    ImageMenu.Close()
 
                End If
 
            End While
 
            Connexion.Close()
 
        Catch ex As Exception
 
            Connexion.Close()
 
            MsgBox(ex.Message)
 
            Exit Sub
 
        End Try
Ici le code simple de l'event ItemClicked pour test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
  Public Sub CMSNotify_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles CMSNotify.ItemClicked
 
           If ListeProgrammes.Contains(e.itemClicked.Text.ToString Then
 
                     MsgBox("Trouvé !")
 
          Else
 
                     MsgBox("Pas trouvé !")
 
           End If
 
    End Sub
Donc lorsque je clic sur les premiers items de la liste, la messagebox affiche bien le texte, mais sur les subitems rien ne se passe.

Si vous avez des questions ou besoin de plus d'infos n'hésitez pas !

Merci d'avance de votre aide.

Bonne journée.

Cordialement-