2008-12-13 7 views
4

en double de: Find node clicked under context menuMenu dynamique Contexte sur Treeview nœuds

J'ai un menu contextuel sur un Treeview, lorsque l'utilisateur clique droit il censé changer en fonction de l'objet de l'étiquette du noeud cliquée actuellement droit.

Actuellement, je suis en train de mettre à jour le menu contextuel dans l'événement after_select, mais cela ne fonctionne pas lorsque l'utilisateur clique avec le bouton droit sur un autre nœud sans le sélectionner. Comment puis-je détecter quel nœud a cliqué à droite et modifier le menu contextuel?

Ou est-ce que je le fais mal?

+0

Dommage que vous ne trouvez pas http://stackoverflow.com/questions/2527/c-treeview-context-menus – Guge

+0

bien repéré. Soit je suis terrible à des requêtes de recherche de SO recherche sucks. Quoi qu'il en soit mis à jour. –

Répondre

4

Vous pouvez utiliser l'événement MouseDown et la méthode HitTest pour déterminer le nœud sur lequel vous avez cliqué.

+0

qui a bien fonctionné, merci. –

+0

Mon plaisir. Merci de l'acceptation. – Guge

3
Private Sub tvTables_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tvTables.MouseDown 
    If e.Button = Windows.Forms.MouseButtons.Right Then 
     Dim M As New ContextMenuStrip 
     Dim HTI As TreeViewHitTestInfo = tvTables.HitTest(e.X, e.Y) 
     If HTI.Node.Level = 0 Then 
      M = T1Menu 
     ElseIf HTI.Node.Level = 1 Then 
      M = T2Menu 
     ElseIf HTI.Node.Level = 2 Then 
      M = T3Menu 
     End If 
     tvTables.ContextMenuStrip = M 
     tvTables.ContextMenuStrip.Show() 
    End If 
End Sub