我有一个包含许多节点的treeView。我希望某些节点在节点折叠/展开时更改其图像。我该怎么办?
不幸的是,TreeNode没有像ExpandNodeImage,CollapseNodeImage \
这样的属性TreeView可以经常更改,因此可以删除/添加节点..我可以删除子节点等等...
也许,有一个类像ExpandAndCollapseNode? p>
答案 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;
}