问题: 如何实现 TreeView 控件 Node 的"鼠标右键弹出菜单",并响应选单(Menu Click)事件?
解答: 菜单结构: MenuNodes -> MenuNodesNodeX
      Private Sub Form_Load()
              Dim i As Integer
              TreeView1.Style = tvwTreelinesPlusMinusPictureText
              For i = 1 To 20
                  TreeView1.Nodes.Add , , "Node" & i, "Node " & i
              Next i
              TreeView1.HideSelection = False
              TreeView1.LabelEdit = tvwManual
      End Sub
      Private Sub MenuNodesNodeX_Click()
              VBA.MsgBox "Node: [" & MenuNodesNodeX.Caption & "] Pop Menu Click!"
      End Sub
      Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
              If Button = vbRightButton Then
                 If TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
                    If Not TreeView1.SelectedItem Is Nothing Then
                       MenuNodesNodeX.Caption = TreeView1.SelectedItem.Text
                       Me.PopupMenu MenuNodes
                    End If
                 End If
              End If
      End Sub
      Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
              If Not TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
                 Set TreeView1.SelectedItem = Nothing
              End If
      End Sub

解决方案 »

  1.   

    参阅:
    TreeView 和 ListView 综合实例 ...
    http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=31&show=25
      

  2.   

    playyuer(女㊣爱) 
    您给的代码我试了一下,对我很有帮助,我想再问一个问题:弹出菜单后,若我不点击菜单项,直接右键单击TreeView中的其他节点,怎样可以在新位置重新弹出菜单.而这个例子中必须先选中某个节点,然后右键单击才弹出菜单
      

  3.   

    本来就应该这样
    实现 TreeView 控件 Node 的"鼠标右键弹出菜单",并响应选单(Menu Click)事件!
      

  4.   

    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    If MenuNodes.Visible Then
       MenuNodes.Visible = False
    End If
    ....
    End Sub