假设我在一个窗体中绘制了一个TreeView控件,以及一个按钮控件。
Global VarAll_NodeX As Node'在公共模块中定义
点击按钮控件可以在TreeView控件中生成一些节点,代码如下:
'在TreeView控件中生成节点
.TVModuls.Nodes.Clear'TVModuls是TreeView控件的名称
.TVModuls.LineStyle = tvwRootLines
Set VarAll_NodeX = .TVModuls.Nodes.Add(, , "ModulName", "模型")
VarAll_NodeX.Expanded = True
Set VarAll_NodeX = .TVModuls.Nodes.Add(, , "OtherName", "其他")
VarAll_NodeX.Expanded = True
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, "kk", "Child 1")
Set VarAll_NodeX = .TVModuls.Nodes.Add("kk", tvwChild, , "Child 11")
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, , "Child 2")
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, , "Child 3") Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 4")
Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 5")
Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 6")现在我希望的是右键单击TreeView控件中的任何一个节点之后(不是点击TreeView控件中的空白处)回弹出一个菜单,
我可以在菜单中加入一个“删除”一个“增加”菜单项,我分别点击之后可以实现我的不同效果。假设我实现制作
的菜单叫"MenuCtrlNode"。右键单击后用可以用PopupMenu FrmMain.MenuCtrlNode弹出菜单。但是我不知道在什么事件
中嵌入PopupMenu FrmMain.MenuCtrlNode代码。才能实现右键点击任何一个节点之后产生此菜单。此外由于我需要
删除以及增加节点,所以我还希望在右键点击时不但产生一个菜单还要知道右键点击的是那一个节点,比如知道我点击
的当前节点索引号,因改怎样编写代码呢?望得到大家的帮助,谢谢!
Global VarAll_NodeX As Node'在公共模块中定义
点击按钮控件可以在TreeView控件中生成一些节点,代码如下:
'在TreeView控件中生成节点
.TVModuls.Nodes.Clear'TVModuls是TreeView控件的名称
.TVModuls.LineStyle = tvwRootLines
Set VarAll_NodeX = .TVModuls.Nodes.Add(, , "ModulName", "模型")
VarAll_NodeX.Expanded = True
Set VarAll_NodeX = .TVModuls.Nodes.Add(, , "OtherName", "其他")
VarAll_NodeX.Expanded = True
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, "kk", "Child 1")
Set VarAll_NodeX = .TVModuls.Nodes.Add("kk", tvwChild, , "Child 11")
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, , "Child 2")
Set VarAll_NodeX = .TVModuls.Nodes.Add("ModulName", tvwChild, , "Child 3") Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 4")
Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 5")
Set VarAll_NodeX = .TVModuls.Nodes.Add("OtherName", tvwChild, , "Child 6")现在我希望的是右键单击TreeView控件中的任何一个节点之后(不是点击TreeView控件中的空白处)回弹出一个菜单,
我可以在菜单中加入一个“删除”一个“增加”菜单项,我分别点击之后可以实现我的不同效果。假设我实现制作
的菜单叫"MenuCtrlNode"。右键单击后用可以用PopupMenu FrmMain.MenuCtrlNode弹出菜单。但是我不知道在什么事件
中嵌入PopupMenu FrmMain.MenuCtrlNode代码。才能实现右键点击任何一个节点之后产生此菜单。此外由于我需要
删除以及增加节点,所以我还希望在右键点击时不但产生一个菜单还要知道右键点击的是那一个节点,比如知道我点击
的当前节点索引号,因改怎样编写代码呢?望得到大家的帮助,谢谢!
解决方案 »
- 女程序员求助文件监控问题
- 制作报表时,用于command的sql语句用到的变量怎么从form窗体控件中得到啊?(在线等!!!)
- 怎样在局域网上传播屏幕?
- 求MD5加密程序(代码)
- 昨天非常感谢youchenglong(小志)同志,请youchenglong(小志)同志回答。
- 记录表格读取数据
- 各位,请问一下你们写VB应用程序时,工具栏中的漂亮图标哪里来的?我怎么老是找不到现成的,谁能提供一些,先谢了。
- VB 中怎么判断文件打开的状态即打开是否成功
- 高手请进,关于 API
- ***¥及特殊符号的问题?***
- adodc控件连的数据库,该控件的Find方法中想写上两个条件应该怎么写
- vb图书管理系统的问题
Dim oNode As Node
Set oNode = TreeView1.HitTest(x, y)
If Not oNode Is Nothing And Button = vbRightButton Then
'oNode就是你现在点击的节点
PopupMenu mnu
End If
End Sub
Dim xnode As Node
Set xnode = Me.TreeView1.HitTest(x, y)
If Button=2 And Not ObjPtr(xnode) = 0 Then PopupMenu FrmMain.MenuCtrlNode
MsgBox xnode.Index
End Sub
但是在使用时还是有一些问题:
1。点击空白的地方就会报错。
2。我希望点击了某个节点后,此节点会反色显示,即背景显示成蓝色。该如何编写代码?
3。HitTest(x, y)这个方法我很陌生,有没有别的实现方法呀?
if not tv.hitTest(x,y) is nothing then
Set xnode = Me.TreeView1.HitTest(x, y)
end if2.这个还真没没试验过:可以让其他节点选中,且不隐藏选中的节点,可能可行。3.这个方法很好用,一会生,二回熟。以后再作tv的时候会用到呢
Dim xnode As Node
Set xnode = Me.TreeView1.HitTest(x, y)
If ObjPtr(xnode) = 0 Then
Exit Sub
ElseIf Button = 2 Then
PopupMenu FrmMain.MenuCtrlNode
TreeView1.Nodes.Item(xnode.Index).Selected = True
End If
End Sub