[Tips][TreeView] マウスポインターがラベルテキストの上にあるときに外観をハイパーリンクにする

マウスポインターがラベルテキストの上にあるときに外観をハイパーリンクにするにはHotTrackingプロパティにTrueを設定します。

下記は外観をハイパーリンクに設定する例です。

VBの例

' フォームロード時の処理
Private Sub Form16_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)

    '全ノードを展開する
    TreeView1.ExpandAll()

    '★★★外観をハイパーリンクにする★★★
    TreeView1.HotTracking = True
End Sub

C#の例

// フォームロード時の処理
private void Form16_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);

    //全ノードを展開する
    treeView1.ExpandAll();

    //★★★外観をハイパーリンクにする★★★
    treeView1.HotTracking = true;
}

[Tips][TreeView] 親ノードを取得する

選択されたノードの親ノードを取得するにはParentNodeプロパティを参照します。

選択されているノードがルートノードの場合は親ノードは存在しないため、ParentNodeプロパティはNothing(C#はNull)となります。

下記は親ノードを取得する例です。

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

VBの例

' フォームロード時の処理
Private Sub Form15_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)

    '全ノードを展開する
    TreeView1.ExpandAll()
End Sub

' [選択ノードの親ノードを取得する]ボタンクリック時の処理
Private Sub btnGetParentNode_Click(sender As System.Object, e As System.EventArgs) Handles btnGetParentNode.Click
    '選択されているノードがあるか?
    If TreeView1.SelectedNode IsNot Nothing Then
        Dim msg As String

        If TreeView1.SelectedNode.Parent Is Nothing Then
            msg = "親ノードはありません"
        Else
            Dim parentNode As New TreeNode

            '★★★親ノードを取得する★★★
            parentNode = TreeView1.SelectedNode.Parent

            msg = parentNode.Text
        End If

        MessageBox.Show(msg)
    End If
End Sub

C#の例

// フォームロード時の処理
private void Form15_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);

    //全ノードを展開する
    treeView1.ExpandAll();
}

// [選択ノードの親ノードを取得する]ボタンクリック時の処理
private void btnGetParentNode_Click(object sender, EventArgs e)
{
    //選択されているノードがあるか?
    if (treeView1.SelectedNode != null)
    {
        string msg;

        if (treeView1.SelectedNode.Parent == null)
            msg = "親ノードはありません";
        else
        {
            TreeNode parentNode = new TreeNode();

            //★★★親ノードを取得する★★★
            parentNode = treeView1.SelectedNode.Parent;

            msg = parentNode.Text;
        }

        MessageBox.Show(msg);
    }
}

[Tips][TreeView] ノードを結合する線の色を変更する

[ad code=2 align=left]
TreeViewコントロールでは、ノードを結合する線の色を変更することが可能です。

ノードを結合する線の色を変更するにはLineColorプロパティに線の色(Color構造体の値)を設定します。

下記は、ノードを結合する線の色を変更する例です。

VBの例

' フォームロード時の処理
Private Sub Form14_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)

    '★★★ノードを結合する線の色をOrangeRedにする★★★
    TreeView1.LineColor = Color.OrangeRed

    '全ノードを展開する
    TreeView1.ExpandAll()
End Sub

C#の例

// フォームロード時の処理
private void Form14_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);

    // ★★★ノードを結合する線の色をOrangeRedにする★★★
    treeView1.LineColor = Color.OrangeRed;
        
    // 全ノードを展開する
    treeView1.ExpandAll();
}