困扰本人已久的TreeView控件问题。如何实现以下问题!50分,在线急等!!!

dljinsui 2004-07-15 12:51:21
1、单击节点时,得到节点位于的节数。
如:第二节点下有若干个Item,单击其中一个,能得到其是位于第三节的。
2、如果某一节点下有若干个带Checked选项的Item,能否实现选中其中一个Item(在前面打上挑),同节点下的其它Item即使有挑也自动取消?

暂时先问上面两个问题。
谢谢!!!!
...全文
251 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuginka 2004-07-15
  • 打赏
  • 举报
回复
1.在nodeclick事件
if node.chile is not nothing
msgbox node.child.count
end if
ryuginka 2004-07-15
  • 打赏
  • 举报
回复
我发个FORM给你,你VB打开,里面有详细代码
ryuginka 2004-07-15
  • 打赏
  • 举报
回复
1.在nodeclick事件
msgbox node.child.count
2.也可以,给个邮件,我发个给你.
northwolves 2004-07-15
  • 打赏
  • 举报
回复
利用NODE 的TAG 属性 或 KEY 值,加上第三节点的判定条件执行楼上的事件
flyingZFX 2004-07-15
  • 打赏
  • 举报
回复
判断Node.Key值,就可以了
dljinsui 2004-07-15
  • 打赏
  • 举报
回复
楼上的朋友,谢谢!!!

现在还有些问题。
以上的方法我试了一下非常好。

对于同一个节点下只能选择一个的程序我试过了,很好。

如果我只想实现第三节点下的所有ITEM只能选一个,如何实现?你的程序是对所以节点都适用。我只想指定第三节点。

==================
谢谢

chenyu5188 2004-07-15
  • 打赏
  • 举报
回复
UP
ryuginka 2004-07-15
  • 打赏
  • 举报
回复
我发出来吧:
楼主看看:
'*****对所选择的节点进行打勾操作******
Private Sub TrvMK_NodeCheck(ByVal Node As MSComctlLib.Node)
If Not Node.Parent Is Nothing Then
If Node.Parent.Checked = False Then
Node.Parent.Checked = Node.Checked
End If
End If
CheckNode Node
End Sub
flyingZFX 2004-07-15
  • 打赏
  • 举报
回复
你有源程序,要的话,联系我吧,
flying_zfx@hotmail.com
flyingZFX 2004-07-15
  • 打赏
  • 举报
回复
=======================
第二题
=======================

Option Explicit

Private Sub Form_Load()
With Me
With .TreeView1
With .Nodes
.Add , , "R", "Root"
.Add "R", 4, "a", "A"
.Add "R", 4, "B", "B"
.Add "R", 4, "C", "C"
.Add "R", 4, "D", "D"
End With
End With
End With
End Sub



Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer
Dim cNode As Node

Set cNode = Node.FirstSibling
For i = 1 To Node.Parent.Children
If cNode.Key <> Node.Key Then
cNode.Checked = False
End If
Set cNode = cNode.Next
Next i
Set cNode = Nothing
End Sub
flyingZFX 2004-07-15
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Form_Load()
With Me
With .TreeView1
.Indentation = 10
With .Nodes
.Add , , "a", "a"
.Add "a", 4, "b", "b"
.Add "b", 4, "c", "c"
End With
.Nodes(1).Expanded = True
End With
End With
End Sub



Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim cur_Node As Node

Set cur_Node = Me.TreeView1.HitTest(x, y)

If Button = 2 Then
If Not cur_Node Is Nothing Then
MsgBox "您现在点击的是:" & cur_Node.Key & "类型的节点!"
Set TreeView1.SelectedItem = cur_Node
End If
ElseIf Button = 1 Then
Debug.Print "左键!"
End If
End Sub
rainstormmaster 2004-07-15
  • 打赏
  • 举报
回复
//、单击节点时,得到节点位于的节数。
如:第二节点下有若干个Item,单击其中一个,能得到其是位于第三节的。

楼上的 ryuginka(ryuginka) 审题不认真,理解错了,应为:

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim buff() As String
buff = Split(Node.FullPath, Me.TreeView1.PathSeparator)
MsgBox "点击的节点位于第" + CStr(UBound(buff) + 1) + "层"
End Sub
jone999 2004-07-15
  • 打赏
  • 举报
回复
aww_99@163.net
我也要一份,tks
dljinsui 2004-07-15
  • 打赏
  • 举报
回复
CHENLIANG@CNDEVX.COM
CHENLIAN1226@163.COM

===============================
谢谢楼上几位朋友热心帮助.
loverpyh 2004-07-15
  • 打赏
  • 举报
回复
楼上的,我也需要,给我一份好吗?谢谢了colefeng88@126.com

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧