Insérer un item dans un contextmenu (dynamiquement) [Résolu]

Signaler
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009
-
Bonjour,

j'ai dans ma fenêtre un contextmenu nommé ctxMenu . J'aimmerais ajouter de manière dynamique des items dans mon menu. Pour cela, j'utilise le code suivant :

 Menuctx.Items.Add("test")

Le problème est que je ne sais pas comment gérer l'évènement lié au clic de ce nouvel Item . Quelqu'un pourrait-il m'expliquer comment faire s'il vous plait ?

Merci pour votre aide
Kevin Perriat

5 réponses

Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

Bon après de nombreux essais je viens de trouver la solution. Je la poste car elle peut servir à certains
Voici le code pour ajouter les Items et ajouter l'écouteur :

Menuctx.Items.Add("test1")
Menuctx.Items.Add("test2")
Menuctx.Items.Add("test3")
AddHandler Menuctx.ItemClicked, AddressOf MyClick

Et voici la fonction ratachée à l'évènement :

Private Sub MyClick(ByVal sender As System.Object, ByVal e As _
   ToolStripItemClickedEventArgs)
   If e.ClickedItem.Text = "test1" Then
      MsgBox("test1")

   ElseIf e.ClickedItem.Text = "test2" Then
      MsgBox("test2")
       
   Else
      MsgBox("test3")
   End If

End Sub

Merci lim pour ton aide

++
Messages postés
329
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
10 mai 2014
4
Salut

il faut ajouter un écouteur à l'évennement Click de ton menu
Quand l'évènement click arrive il est redirigé vers la fonction qui gère l'évènnement (ici MyClick)

      Menuctx.Items.Add("test")
      Addhandler Menuctx.click, Adressof MyClick

private sub MyClick(Byval sender as System.object,Byval e as System.EventArgs)
   'ton code
end sub

@+
LIM
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

salut

ton code marche bien, mais le problème est que je souhaite créer plusieurs items à la suite :

Menuctx.Items.Add("test1")
Menuctx.Items.Add("test2")
Menuctx.Items.Add("test3")

si je suis ton code, la fonction MyClick sera appelée à chaque fois que je cliquerais sur mon menu, alors que je souhaiterais que chaque item corresponde à une fonction unique.

Pourrais-tu me dire comment faire s'il te plait?

Merci
Kevin
Messages postés
329
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
10 mai 2014
4
Re

   j'ai fait une erreur, j'avais fait ce bout de code il y a un moment et je n'avais plus la syntaxe en tête

   cela reste vrai
   Menuctx.Items.Add("test1")
   Menuctx.Items.Add("test2")
   Menuctx.Items.Add("test3")
   Addhandler Menuctx.click, Adressof MyClick

cela par contre évolue
private sub MyClick(Byval sender as System.object,Byval e as ToolStripItemClickedEventArgs)
   if e.clickeditem.text="test1" then

   elseif e.clickeditem.text="test2" then

else

endif
end sub

@+
LIM
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

Re,

j'ai fait ce que tu m'as dit mais il y a une erreur : dans le AddHandler Menuctx.Click, AddressOf MyClick , MyClick est souligné et VB me donne cette erreur :

    Private Sub MyClick(ByVal sender As System.Object, ByVal e As ToolStripItemClickedEventArgs) n'a pas lea même signature que le délégué  Delegate Sub EventHandler(sender As Object, e As System.EventArgs)

Pourrais tu m'expliquer comment résoudre ce problème?

Merci pour ton aide
Kevin