c# - 在展开折叠事件中更改 TreeNode 图像

标签 c# winforms treeview

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

不幸的是,TreeNode 没有 ExpandNodeImage、CollapseNodeImage 等属性\

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

也许,有一个类似 ExpandAndCollapseNode 的类?

最佳答案

1).将 ImageList 控件添加到您的 WinForm。

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

3).将 'ImageList 控件分配给 'TreeView 的 'ImageList 属性

在这一点上,您可能想要对 TreeView 进行初始传递,假设它已填充,分配 Node.ImageIndex 属性以指向 Image ... 在 ImageList ... 您想要用于 Node取决于它是否有 child ,或者其他什么。

4).例如,如果用户展开一个节点,您可以使用 TreeView 的 BeforeExpand 事件来更改节点的图片:像这样:在这种情况下,我们使用 ImageList 中图片的索引:

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

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

6) 还有许多其他可能的节点图片变体可供使用:查看:SelectedImageIndex 和 SelectedImageKey:您还可以在 BeforeSelect、AfterSelect 和 BeforeExpand 事件中更改节点图片,具体取决于您想要的效果。

关于c# - 在展开折叠事件中更改 TreeNode 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566643/

相关文章:

c# - y 轴从 10 开始,而不是使用 Windows 应用程序的 mschart 中的 0

c# - Winform继承和默认窗体大小

c# - 如何在根节点 [TreeView] 找到子节点

c# - 登录时检测来自服务的远程桌面连接 (W7/32)

c# - 如何在窗口的标题栏中添加一个额外的按钮?

c# - 链接标签打不开

tkinter - 从 tkinter 中的 TreeView 获取数据

javascript - nickperkinslondon angular treeview expand_all() 问题

c# - Delegatecommand、relaycommand、routedcommand的区别

java - iText 或 iTextSharp : when i use the ‘PdfStamper’ , target file use adobe.reader Verify signature failure