当前位置: 代码迷 >> VB Dotnet >> TreeView 数目统计,请问
  详细解决方案

TreeView 数目统计,请问

热度:19   发布时间:2016-04-25 02:12:16.0
TreeView 数目统计,请教
本帖最后由 ivanwfy 于 2014-09-04 20:35:15 编辑

如上图所示:默认,sky,sea节点下各有一篇文章,现在想实现:让每个节点显示所包含文章的总数,也就是默认(3),sky(2),sea(1),sea下面可能还有无限级的节点,如果它们也含有文章,也要统计到父节点中去,请问怎么统计并更改 (文章数目根据括号中的数值来算即可,每个节点自身的文章数我已经算好了)

简单来说就是:怎么把子节点括号中的数字,累计到父节点中
------解决方案--------------------

两个类各复制到它自己的位置就行了。



' 这个类复制到类模块内的
Public Class Class1
    Private List1 As New List(Of Integer)
    Private NextKey1 As Integer = 0
    Private TreeView1 As TreeView
    Public Property _TreeView1() As TreeView
        Get
            Return TreeView1
        End Get
        Set(ByVal value As TreeView)
            TreeView1 = value
        End Set
    End Property

    Public Sub MySub()
        Dim Sum1 As Integer = List1.Sum
        ' TreeView1.Nodes
        ReadAllNode(TreeView1.Nodes)
    End Sub

    Private Sub ReadAllNode(ByVal Nodes1 As TreeNodeCollection)
        Dim Val1 As Integer
        Dim Str1 As String
        Dim Str2 As String
        Dim Str3 As String
        For Each S As TreeNode In Nodes1
            Str2 = S.Text
            Str3 = S.FullPath

            If S.Nodes.Count > 0 Then
                ReadAllNode(S.Nodes)
            End If
            If String.Equals(Str2, Str3) Then
                Str1 = Str2.Split("(").ElementAt(0)
                TreeView1.Nodes.Item(NextKey1).Text = Str1 & "(" & List1.Sum & ")"
                List1.Clear()
                NextKey1 += 1
            Else
                Val1 = Val(Str2.Split("(").ElementAt(1))
                List1.Add(Val1)
            End If
        Next
    End Sub

End Class

'这个类是窗体的
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Cla1 As New Class1
        Cla1._TreeView1 = Me.TreeView1
        Cla1.MySub()
    End Sub
End Class

------解决方案--------------------
此类的头部要加上
import System.Linq
  相关解决方案