ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

Visual Basic 中学校 > VB.NET サンプル > Windows.Forms.TreeView >

ノードの数を取得する

参照:TreeViewの基礎用語

 

1.子ノードの数を取得する

 

以下の例では子ノードの数を取得する。孫ノードは無視される。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Count As Integer

'Nodeは対象のノードを表すTreeNode型の変数
Count = Node.Nodes.Count

MsgBox(Count)

 

以下の例では2番目のルートノードの子ノードの数を取得する。孫ノードは無視される。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Count As Integer

Count = TreeView1.Nodes(1).Nodes.Count

MsgBox(Count)

 

2.子ノード以下の全ノードの数を取得する

 

以下の例ではツリービューに属するすべてのノードの数を取得する。これには子ノード以下の全ノードも含まれる。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim Count As Integer

    Count = GetAllNodes(TreeView1.Nodes).Count

    MsgBox(Count)

End Sub

'■GetAllNodes
''' <summary>子ノードも含んだすべてのノードを取得する</summary>
''' <param name="Nodes">トップレベルのNodes。例:TreeView1.Nodes</param>
''' <returns>すべてのNodeを含んだコレクション</returns>
Private Function GetAllNodes(ByVal Nodes As TreeNodeCollection) As ArrayList

    Dim Ar As New ArrayList
    Dim Node As TreeNode

    For Each Node In Nodes
        Ar.Add(Node)
        If Node.GetNodeCount(False) > 0
Then
           
Ar.AddRange(GetAllNodes(Node.Nodes))
        End
If
   
Next

    Return Ar

End Function

メモ:GetAllNodesについては別掲 子ノード以下の全ノードを取得する を参照。

 

以下の例では2番目のルートノードに属するすべてのノードの数を取得する。これには子ノード以下の全ノードも含まれる。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim Count As Integer

    Count = GetAllNodes(TreeView1.Nodes(1).Nodes).Count

    MsgBox(Count)

End Sub

'■GetAllNodes
''' <summary>子ノードも含んだすべてのノードを取得する</summary>
''' <param name="Nodes">トップレベルのNodes。例:TreeView1.Nodes</param>
''' <returns>すべてのNodeを含んだコレクション</returns>
Private Function GetAllNodes(ByVal Nodes As TreeNodeCollection) As ArrayList

    Dim Ar As New ArrayList
    Dim Node As TreeNode

    For Each Node In Nodes
        Ar.Add(Node)
        If Node.GetNodeCount(False) > 0
Then
           
Ar.AddRange(GetAllNodes(Node.Nodes))
        End
If
   
Next

    Return Ar

End Function

メモ:GetAllNodesについては別掲 子ノード以下の全ノードを取得する を参照。