【发布时间】:2010-04-02 12:32:41
【问题描述】:
我有一个包含许多节点的树视图。我希望 some 节点在节点折叠/展开时更改其图像。我该怎么做?
不幸的是,TreeNode 没有 ExpandNodeImage、CollapseNodeImage 等属性 \
TreeView 可以经常更改,因此可以删除/添加节点..我可以删除子节点等等...
也许,有像 ExpandAndCollapseNode 这样的类?
【问题讨论】:
我有一个包含许多节点的树视图。我希望 some 节点在节点折叠/展开时更改其图像。我该怎么做?
不幸的是,TreeNode 没有 ExpandNodeImage、CollapseNodeImage 等属性 \
TreeView 可以经常更改,因此可以删除/添加节点..我可以删除子节点等等...
也许,有像 ExpandAndCollapseNode 这样的类?
【问题讨论】:
1)。将 ImageList 控件添加到您的 WinForm。
2)。使用您希望更改/显示的图片/图标填充 ImageList,以响应用户在运行时对 TreeView 所做的操作,例如展开或折叠节点。
3)。将 'ImageList 控件分配给 'TreeView 的 'ImageList 属性
此时,您可能希望对 TreeView 进行初始传递,假设它已填充,分配 Node.ImageIndex 属性以指向 Image... 在 ImageList ... 您要用于节点取决于它是否有孩子,或者其他什么。
4)。例如,如果用户展开一个节点,您可以使用 TreeView 的 BeforeExpand 事件来更改节点的图片:像这样:在这种情况下,我们使用图片在 ImageList 中的索引:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Node.ImageIndex = 3;
}
5) 您也可以使用 ImageKey 属性来设置节点的图像,该属性是图像的字符串名称
6) 还有很多其他可能的节点图片变体可供使用:查看:SelectedImageIndex 和 SelectedImageKey:您还可以在 BeforeSelect、AfterSelect 和 BeforeExpand 事件中更改节点图片,具体取决于您所追求的效果。
【讨论】:
TreeView 具有以下事件,这些事件将在节点折叠/展开时触发。
BeforeCollapse
BeforeExpand
AfterCollapse
AfterExpand
【讨论】:
最好用:
treeNode.SelectedImageIndex = 1;
【讨论】:
BeforeCollapse
BeforeExpand
AfterCollapse
AfterExpand
同时使用 ImageIndex 和 SelectedImageIndex:
private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Node.ImageIndex = 1;
e.Node.SelectedImageIndex = 1;
}
【讨论】:
您可以使用 AfterCollapse 和 AfterExpand 事件(在 TreeView 本身上可用)来修改节点的图像。
您可以使用 TreeViewEventArgs 输入参数获取节点:
private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e)
{
e.Node.ImageIndex = 1;
}
【讨论】: