[Tips][TreeView] 選択されているノードを取得する

選択されているノードを取得するにはSelectedNodeプロパティを参照します。

また、テキストラベルはSelectedNodeプロパティのTextプロパティで確認することができます。

もしも、選択されたノードが変更されたことを知りたい場合には、BeforeSelectイベントAfterSelectイベントを使用します。

BeforeSelectイベントはツリーノードが選択される前に、AfterSelectイベントはツリーノードが選択された後に発生します。

下記は、選択されているノードを取得する例です。

[選択されているノードを取得]ボタンがクリックされると、現在選択されているノードのテキストラベルを表示します。

VBの例

' フォームロード時の処理
Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '親ノード
    Dim rootNode As New TreeNode("ルート")
    '子ノード
    Dim childNode1 As New TreeNode("子ノード1")
    Dim childNode2 As New TreeNode("子ノード2")
    '孫ノード
    Dim grandChildNode1 As New TreeNode("孫ノード1")
    Dim grandChildNode2 As New TreeNode("孫ノード2")
    Dim grandChildNode3 As New TreeNode("孫ノード3")

    '★★★親ノードをTreeViewに追加★★★
    TreeView1.Nodes.Add(rootNode)

    '★★★子ノードを親ノードに追加★★★
    rootNode.Nodes.Add(childNode1)
    rootNode.Nodes.Add(childNode2)

    '★★★孫ノードを子ノードに追加★★★
    childNode2.Nodes.Add(grandChildNode3)
    childNode1.Nodes.Add(grandChildNode1)
    childNode1.Nodes.Add(grandChildNode2)
End Sub

' [選択されているノードを取得]ボタンクリック時の処理
Private Sub btnCheckSelectedNode_Click(sender As System.Object, e As System.EventArgs) Handles btnCheckSelectedNode.Click
    Dim strSelectedNode As String

    '★★★選択されたノードを取得★★★
    strSelectedNode = TreeView1.SelectedNode.Text

    '選択されたノードのテキストラベルを表示★★★
    MessageBox.Show(strSelectedNode)
End Sub

' ノードが選択される前の処理
Private Sub TreeView1_BeforeSelect(sender As System.Object, e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
    'ノードが選択される前に処理する必要がある場合は
    'このイベントを使用する
End Sub

' ノードが選択された後の処理
Private Sub TreeView1_AfterSelect(sender As System.Object, e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
    'ノードが選択された後に処理する必要がある場合は
    'このイベントを使用する
End Sub

C#の例

// フォームロード時の処理
private void Form3_Load(object sender, EventArgs e)
{
    //親ノード
    TreeNode rootNode = new TreeNode("ルート");
    //子ノード
    TreeNode childNode1 = new TreeNode("子ノード1");
    TreeNode childNode2 = new TreeNode("子ノード2");
    //孫ノード
    TreeNode grandChildNode1 = new TreeNode("孫ノード1");
    TreeNode grandChildNode2 = new TreeNode("孫ノード2");
    TreeNode grandChildNode3 = new TreeNode("孫ノード3");

    //★★★親ノードをTreeViewに追加★★★
    treeView1.Nodes.Add(rootNode);

    //★★★子ノードを親ノードに追加★★★
    rootNode.Nodes.Add(childNode1);
    rootNode.Nodes.Add(childNode2);

    //★★★孫ノードを子ノードに追加★★★
    childNode2.Nodes.Add(grandChildNode3);
    childNode1.Nodes.Add(grandChildNode1);
    childNode1.Nodes.Add(grandChildNode2);
}

// [選択されているノードを取得]ボタンクリック時の処理
private void btnCheckSelectedNode_Click(object sender, EventArgs e)
{
    string strSelectedNode;

    // ★★★選択されたノードを取得★★★
    strSelectedNode = treeView1.SelectedNode.Text;

    // 選択されたノードのテキストラベルを表示★★★
    MessageBox.Show(strSelectedNode);
}

// ノードが選択される前の処理
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    // ノードが選択される前に処理する必要がある場合は
    // このイベントを使用する
}

// ノードが選択された後の処理
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    // ノードが選択された後に処理する必要がある場合は
    // このイベントを使用する
}

[Tips][TreeView] 子ノードを追加する

[ad code=2 align=left]
既存のノードに子ノードを追加するには、親ノードのNodesプロパティAddメソッドを使用します。

ルートノードを追加する場合はTreeViewの

Addメソッドの引数には、追加する子ノードのTreeNodeインスタンスを渡します。

子ノードは入れ子にして作成することができ、孫、曾孫のように深い階層にすることが可能です。

下記は、子ノードを追加する例です。

親-子-孫の階層を作成しています。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim rootNode As New TreeNode
    Dim childNode1 As New TreeNode
    Dim childNode2 As New TreeNode
    Dim grandChildNode1 As New TreeNode
    Dim grandChildNode2 As New TreeNode
    Dim grandChildNode3 As New TreeNode

    '親ノードの作成
    rootNode.Text = "ルート"

    '子ノードの作成
    childNode1.Text = "子ノード1"
    childNode2.Text = "子ノード2"

    '孫ノードの作成
    grandChildNode1.Text = "孫ノード1"
    grandChildNode2.Text = "孫ノード2"
    grandChildNode3.Text = "孫ノード3"

    '★★★親ノードをTreeViewに追加★★★
    TreeView1.Nodes.Add(rootNode)

    '★★★子ノードを親ノードに追加★★★
    rootNode.Nodes.Add(childNode1)
    rootNode.Nodes.Add(childNode2)

    '★★★孫ノードを子ノードに追加★★★
    childNode2.Nodes.Add(grandChildNode3)
    childNode1.Nodes.Add(grandChildNode1)
    childNode1.Nodes.Add(grandChildNode2)
End Sub

C#の例

// フォームロード時の処理
private void Form2_Load(object sender, EventArgs e)
{
    TreeNode rootNode = new TreeNode();
    TreeNode childNode1 = new TreeNode();
    TreeNode childNode2 = new TreeNode();
    TreeNode grandChildNode1 = new TreeNode();
    TreeNode grandChildNode2 = new TreeNode();
    TreeNode grandChildNode3 = new TreeNode();

    //親ノードの作成
    rootNode.Text = "ルート";

    //子ノードの作成
    childNode1.Text = "子ノード1";
    childNode2.Text = "子ノード2";

    //孫ノードの作成
    grandChildNode1.Text = "孫ノード1";
    grandChildNode2.Text = "孫ノード2";
    grandChildNode3.Text = "孫ノード3";

    //★★★親ノードをTreeViewに追加★★★
    treeView1.Nodes.Add(rootNode);

    //★★★子ノードを親ノードに追加★★★
    rootNode.Nodes.Add(childNode1);
    rootNode.Nodes.Add(childNode2);

    //★★★孫ノードを子ノードに追加★★★
    childNode2.Nodes.Add(grandChildNode3);
    childNode1.Nodes.Add(grandChildNode1);
    childNode1.Nodes.Add(grandChildNode2);
}

[Tips][TreeView] ノードを追加する

[ad code=2 align=left]

TreeViewコントロールにノードを追加するにはNodesプロパティAddメソッドを使用します。

Addメソッドには下表に示すように多くのオーバーロードがあります。

Addメソッド
メソッド 説明
Add(String) ラベルテキストを指定してノードを追加する
Add(TreeNode) ツリーノードをツリーノードコレクションの末尾に追加する
Add(String, String) 指定したツリーノードの名前、表示するテキストを作成しコレクションに追加する
Add(String, String, Int32) 指定したツリーノードの名前、表示するテキスト、イメージのインデックスでツリーノードを作成しコレクションに追加する
Add(String, String, String) 指定したツリーノードの名前、表示するテキスト、ツリーノードに表示するイメージでツリーノードを作成しコレクションに追加する
Add(String, String, Int32, Int32) 指定したツリーノードの名前、表示するテキスト、イメージのインデックス、ノード選択時のイメージインデックスでツリーノードを作成しコレクションに追加する
Add(String, String, String, String) 指定したツリーノードの名前、表示するテキスト、イメージのキー、ノード選択時のイメージインデックスでツリーノードを作成しコレクションに追加する

下記はノードを追加する例です。

表示するテキストを指定してノードを追加するAddメソッドと、ツリーノードを指定してノードを追加するAddメソッドを使用しています。

VBの例

' フォームロード時の処理
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '★★★表示するテキストを指定してノードを追加★★★
    TreeView1.Nodes.Add("ノード1")
    TreeView1.Nodes.Add("ノード2")
    TreeView1.Nodes.Add("ノード3")

    'TreeNodeクラスのインスタンスを作成
    Dim node1 As New TreeNode("ノード4")
    Dim node2 As New TreeNode("ノード5")
    Dim node3 As New TreeNode("ノード6")

    '★★★準備しておいたTreeNodeクラスのインスタンス(node1~node3)をノードとして追加する★★★
    TreeView1.Nodes.Add(node1)
    TreeView1.Nodes.Add(node2)
    TreeView1.Nodes.Add(node3)
End Sub

C#の例

// フォームロード時の処理
private void Form1_Load(object sender, EventArgs e)
{
    // ★★★表示するテキストを指定してノードを追加★★★
    treeView1.Nodes.Add("ノード1");
    treeView1.Nodes.Add("ノード2");
    treeView1.Nodes.Add("ノード3");

    // TreeNodeクラスのインスタンスを作成
    TreeNode node1 = new TreeNode("ノード4");
    TreeNode node2 = new TreeNode("ノード5");
    TreeNode node3 = new TreeNode("ノード6");

    // ★★★準備しておいたTreeNodeクラスのインスタンス(node1~node3)をノードとして追加する★★★
    treeView1.Nodes.Add(node1);
    treeView1.Nodes.Add(node2);
    treeView1.Nodes.Add(node3);
}