ヘッダー

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

 

ノードを選択する

参照:TreeViewの基礎用語

 

1.文字を指定して選択する例

 

以下の例ではすべてのノードの中から「スキピオ」と表示されているノードを選択する。

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

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

    Dim Node As TreeNode

    For Each Node In GetAllNodes(TreeView1.Nodes)
        If Node.Text = "スキピオ"
Then
           
TreeView1.SelectedNode = Node
            TreeView1.Focus()
'フォーカスがないと反転して表示されない。
           
Exit For
       
End If
    Next

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については別掲 子ノード以下の全ノードを取得する を参照。

 

以下の例では子ノードの中で「カラカラ」と表示されているノードを選択する。孫以下のノードは無視される。

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

Dim Node As TreeNode

'ParentNodeは親ノードを示すTreeNode型の変数。
For Each Node In ParentNode.Nodes
    If Node.Text = "カラカラ"
Then
   
    TreeView1.SelectedNode = Node
        TreeView1.Focus()
'フォーカスがないと反転して表示されない。
   
    Exit For
   
End If
Next

 

2.位置を指定して選択する例

以下の例では1番目のルートノードの2番目の子ノードの1番目の子ノードを選択する。

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

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

    Dim Node As TreeNode

    '▼1番目のルートノードの2番目の子ノードの1番目の子ノードを選択する

    Node = GetNodeFromPosition(TreeView1.Nodes, 0, 1, 0)
    TreeView1.SelectedNode = Node
    TreeView1.Focus()
'フォーカスがないと反転して表示されない。

End Sub

'■GetNodeFromPosition
''' <summary>位置を指定して全ノードの中から特定のノードを取得する</summary>
''' <param name="Nodes">トップレベルのNodes。例:TreeView1.Nodes</param>
''' <returns>指定されたTreeNode</returns>
''' <remarks>存在しない位置を指定した場合の動作は未定義</remarks>
Private Function GetNodeFromPosition(ByVal Nodes As TreeNodeCollection, ByVal ParamArray Indexes() As Integer) As TreeNode

    Dim i As Integer
   
Dim Node As TreeNode

    Node = Nodes(Indexes(0))

    For i = 1 To Indexes.Length - 1
        Node = Node.Nodes(Indexes(i))
   
Next

    Return Node

End Function

メモ:GetNodeFromPositionについては別掲 位置を指定してノードを取得する を参照。

 

以下の例では2番目の子ノードを選択する。

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

'ParentNodeは親ノードを示すTreeNode型の変数。
TreeView1.SelectedNode = ParentNode.Nodes(1)
TreeView1.Focus()
'フォーカスがないと反転して表示されない。