我在 Treeview 上有一个上下文菜单,当用户右键单击它应该根据当前右键单击的节点的标记对象进行更改。
目前我正在更新 after_select 事件中的上下文菜单,但是当用户右键单击另一个节点而不选择它时,这不起作用。
如何检测右键单击哪个节点并更改上下文菜单?还是我做错了?
我在 Treeview 上有一个上下文菜单,当用户右键单击它应该根据当前右键单击的节点的标记对象进行更改。
目前我正在更新 after_select 事件中的上下文菜单,但是当用户右键单击另一个节点而不选择它时,这不起作用。
如何检测右键单击哪个节点并更改上下文菜单?还是我做错了?
您可以使用 MouseDown 事件和 HitTest 方法来找出单击了哪个节点。
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