E
Eric Newton
Ok, given the following VB code:
Private Sub TreeView1_MouseUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseUp
If e.Button And MouseButtons.Right = MouseButtons.Right Then
Dim pt As Point = TreeView1.PointToClient(Form.MousePosition)
Dim node As TreeNode = TreeView1.GetNodeAt(pt)
Dim ctx As New ContextMenu
ctx.MenuItems.Add("Test 1")
ctx.MenuItems.Add(node.Text, AddressOf ContextMenuItem_Click)
ctx.Show(TreeView1, pt)
End If
End Sub
Private Sub ContextMenuItem_Click(ByVal sender As Object, ByVal e As
EventArgs)
'what do you do here? reget the Form.MousePosition node?
'not guaranteed to get the node that was clicked... actually since the
mouse pointer has
'moved now, you are almost gauranteed to NOT get the right node...
'so how do you pass the actual node that was right clicked?
End Sub
just as the comments say, how does one properly hand off which node was
clicked?
in the ContextMenuItem_Click, sender will be the menuitem... so I ask why
the MenuItem type doesnt have a tag... or even the ContextMenu, since the
contextmenu was built (in this case) specific to the node clicked... (in
concept)
so why doesnt COntextMenu or MenuItem or SOMETHING have anything to relate
the click?
The only answer is to subclass the MenuItem or the ContextMenu types and add
this simply trivial but neccesary piece of information... just wondering if
I'm missing something obvious?
Private Sub TreeView1_MouseUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseUp
If e.Button And MouseButtons.Right = MouseButtons.Right Then
Dim pt As Point = TreeView1.PointToClient(Form.MousePosition)
Dim node As TreeNode = TreeView1.GetNodeAt(pt)
Dim ctx As New ContextMenu
ctx.MenuItems.Add("Test 1")
ctx.MenuItems.Add(node.Text, AddressOf ContextMenuItem_Click)
ctx.Show(TreeView1, pt)
End If
End Sub
Private Sub ContextMenuItem_Click(ByVal sender As Object, ByVal e As
EventArgs)
'what do you do here? reget the Form.MousePosition node?
'not guaranteed to get the node that was clicked... actually since the
mouse pointer has
'moved now, you are almost gauranteed to NOT get the right node...
'so how do you pass the actual node that was right clicked?
End Sub
just as the comments say, how does one properly hand off which node was
clicked?
in the ContextMenuItem_Click, sender will be the menuitem... so I ask why
the MenuItem type doesnt have a tag... or even the ContextMenu, since the
contextmenu was built (in this case) specific to the node clicked... (in
concept)
so why doesnt COntextMenu or MenuItem or SOMETHING have anything to relate
the click?
The only answer is to subclass the MenuItem or the ContextMenu types and add
this simply trivial but neccesary piece of information... just wondering if
I'm missing something obvious?