如何取得TreeView顶节点和分节点,所有的值

yz686868 2011-07-12 03:01:37
如题!
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhone99 2011-07-13
  • 打赏
  • 举报
回复
测试一下有错误,
但不是你说的,是否你加其他代码导致的或你的其他代码问题
修改一下


Private Sub TreeView1_NodeClick(Index As Integer, ByVal Node As MSComctlLib.Node)
Dim sngSum As Single

sngSum = Val(Node.Text)

If Node.Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Index, Node)
End If

Debug.Print sngSum

End Sub

Private Function fun_SumChildNode(Index As Integer, ByVal Node As MSComctlLib.Node) As Single
Dim i As Integer
Dim sngSum As Single

For i = 1 To TreeView1(Index).Nodes.Count
If Not (TreeView1(Index).Nodes(i) Is Node.Root) Then
If TreeView1(Index).Nodes(i).Parent.Key = Node.Key Then
sngSum = sngSum + TreeView1(Index).Nodes(i).Text

If TreeView1(Index).Nodes(i).Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Index, TreeView1(Index).Nodes(i))
End If
End If
End If
Next i

fun_SumChildNode = sngSum

End Function
yz686868 2011-07-12
  • 打赏
  • 举报
回复
If TreeView1(Index).Nodes(i).Parent.Key = Node.Key Then


实时错误'91'
对像变量或with变量没设置


jhone99 2011-07-12
  • 打赏
  • 举报
回复

Private Sub TreeView1_NodeClick(Index As Integer, ByVal Node As MSComctlLib.Node)
Dim sngSum As Single

sngSum = Val(Node.Text)

If Node.Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Index, Node)
End If

End Sub

Private Function fun_SumChildNode(Index As Integer, ByVal Node As MSComctlLib.Node) As Single
Dim i As Integer
Dim sngSum As Single

For i = 1 To TreeView1(Index).Nodes.Count
If Not (TreeView1(Index).Nodes(i) Is Node.Root) Then
If TreeView1(Index).Nodes(i).Parent.Key = Node.Key Then
sngSum = sngSum + TreeView1(Index).Nodes(i).Text

If TreeView1(Index).Nodes(i).Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Index, Node)
End If
End If
End If
Next i

End Function
yz686868 2011-07-12
  • 打赏
  • 举报
回复
TreeView1我用的是数组

TreeView1(0)
TreeView1(1)
TreeView1(2)
TreeView1(3)
jhone99 2011-07-12
  • 打赏
  • 举报
回复

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim sngSum As Single

sngSum = Val(Node.Text)

If Node.Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Node)
End If

End Sub

Private Function fun_SumChildNode(ByVal Node As MSComctlLib.Node) As Single
Dim i As Integer
Dim sngSum As Single

For i = 1 To TreeView1.Nodes.Count
If Not (TreeView1.Nodes(i) Is Node.Root) Then
If TreeView1.Nodes(i).Parent.Key = Node.Key Then
sngSum = sngSum + TreeView1.Nodes(i).Text

If TreeView1.Nodes(i).Children > 0 Then
sngSum = sngSum + fun_SumChildNode(Node)
End If
End If
End If
Next i

End Function


yz686868 2011-07-12
  • 打赏
  • 举报
回复
意思是,选中节点以下的所有节点
yz686868 2011-07-12
  • 打赏
  • 举报
回复
写错了。。我是说得到该节点(该层),所有的值。。不是全部所有节点的值。
jhone99 2011-07-12
  • 打赏
  • 举报
回复
遍历就可以了

    For i = 1 To TreeView1.Nodes.Count
sngSum=sngSum + TreeView1.Nodes(i)

7,788

社区成员

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

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