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

Ale*_*alt 4 c# treeview winforms

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

不幸的是,TreeNode没有像ExpandNodeImage,CollapseNodeImage这样的属性

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

也许,有像ExpandAndCollapseNode这样的类?

Bil*_*llW 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;
    }
Run Code Online (Sandbox Code Playgroud)

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

6)还有很多其他可能的节点图片变化的使用方法:检查:SelectedImageIndex和SelectedImageKey:您可以更改节点的图片在BeforeSelect,AfterSelect和BeforeExpand,事件也取决于你后的效果.

  • @Alexander不太确定我完全理解你的评论.所有这些与节点相关的事件(BeforeExpand,AfterExpand,BeforeCollapse,AfterCollapse,BeforeSelect ......以及on和on)实际上都是与/ on/at/to TreeNodes的活动相关的函数,但它们在同一个事件中定义为TreeView事件一致的方式是将标准WinForms中控件的其他"子组件事件"定义为控件事件.我试图想象一下,如果这些事件处于"TreeNode"级别意味着什么:这是否意味着每个TreeNode都可以拥有一个单独的事件处理程序?最好, (2认同)