2008-12-13 120 views
4

式两份:Find node clicked under context menu动态上下文菜单

我已经有了一个TreeView上下文菜单,当用户右键单击它应该基于当前右单击的节点的标签对象来改变。

目前我更新的上下文菜单中after_select事件,但是当用户用鼠标右击到另一个节点不选择它,这并不工作。

如何检测右键单击哪个节点并更改上下文菜单?还是我做错了?

+0

太糟糕了,你没有找到http://stackoverflow.com/questions/2527/c-treeview-context-menus – Guge 2008-12-13 23:58:53

+0

很好发现。要么在SO搜索吸引人的搜索查询中很糟糕。无论如何更新。 – 2008-12-14 00:22:07

回答

4

您可以使用MouseDown事件和方法的HitTest找出被点击的节点。

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