Ajouter un évènement ItemClicked pour ContextMenuStrip
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:
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:
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:
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-