问题: 如何实现 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
解答: 菜单结构: 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
解决方案 »
- 可不可以同一个form1开启多个,只要点一次菜单就新开一个
- 哪种类型的变量可以被赋给多种自定义类型的值?
- 问一个简单常量问题
- 急急急--请教:fpSpreadPreview打印预览怎么看不到?????????
- 散分,高人请进. 注册表中有些键或值被统保护,不能改.
- 超级大笨狼进。
- 關於property Let 和property Get的問題
- 如何判断一个Picture对象是否为空
- 好书推荐:《Visual Basic + SQL Server数据库应用系统开发与实例》
- 定时器显示滚动字幕的问题?
- 和大家辞别!!同时送分!!!
- 还是关于TrueDBGrid7(OLEDB版本)的代码ADDNEW问题……附我的代码。请指教.
TreeView 和 ListView 综合实例 ...
http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=31&show=25
您给的代码我试了一下,对我很有帮助,我想再问一个问题:弹出菜单后,若我不点击菜单项,直接右键单击TreeView中的其他节点,怎样可以在新位置重新弹出菜单.而这个例子中必须先选中某个节点,然后右键单击才弹出菜单
实现 TreeView 控件 Node 的"鼠标右键弹出菜单",并响应选单(Menu Click)事件!
If MenuNodes.Visible Then
MenuNodes.Visible = False
End If
....
End Sub