在展开折叠事件上更改TreeNode图像

时间:2010-04-02 12:32:42

标签: c# winforms treeview

我有一个包含许多节点的treeView。我希望某些节点在节点折叠/展开时更改其图像。我该怎么办?

不幸的是,TreeNode没有像ExpandNodeImage,CollapseNodeImage \

这样的属性

TreeView可以经常更改,因此可以删除/添加节点..我可以删除子节点等等...

也许,有一个类像ExpandAndCollapseNode?

5 个答案:

答案 0 :(得分:7)

1)。将ImageList控件添加到WinForm。

2)。使用要更改/显示的图片/图标填充ImageList,以响应用户在运行时使用TreeView执行的操作,例如展开或折叠节点。

3)。将'ImageList控件分配给'TreeView

的'ImageList属性

此时您可能希望对TreeView进行初始传递,假设它已填充,指定Node.ImageIndex属性指向ImageList中的Image ... ...您要用于Node取决于它是否有孩子,或其他什么。

4)。例如,如果用户扩展Node,您可以使用TreeView的BeforeExpand事件来更改Node的图片:如下所示:在这种情况下,我们使用ImageList中Picture的索引:

    private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
    {
        e.Node.ImageIndex = 3;
    }

5)您还可以使用ImageKey属性设置节点的图像,该属性是图像的字符串名称

6)还有许多其他可能的节点图片变体可供使用:签出:SelectedImageIndex和SelectedImageKey:您可以在BeforeSelect,AfterSelect和BeforeExpand中更改节点图片,也可以根据您的效果更改事件。

答案 1 :(得分:2)

TreeViews具有以下事件,这些事件将在折叠/扩展节点时触发。

BeforeCollapse
BeforeExpand
AfterCollapse
AfterExpand

答案 2 :(得分:2)

最好使用:

treeNode.SelectedImageIndex = 1;

答案 3 :(得分:0)

你可以使用事件AfterCollapse& AfterExpand(可在TreeView本身上使用)来修改节点的图像。

您可以使用TreeViewEventArgs输入参数获取节点:

private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e)
{
    e.Node.ImageIndex = 1;
}

答案 4 :(得分:0)

BeforeCollapse
BeforeExpand
AfterCollapse
AfterExpand

同时使用ImageIndex和SelectedImageIndex:

private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
    {
        e.Node.ImageIndex = 1;
        e.Node.SelectedImageIndex = 1;
    }