2010-04-03 43 views
0

我正在尝试使用TreeView控件创建文件夹资源管理器。现在,我添加了一个ImageList和两个图像 - 一个用于文件夹,另一个用于选定的文件夹。我使用'BeforeExpand'事件来更改当前节点(文件夹)的图标。问题是,当用户选择其他文件夹时,我不知道如何将其更改回来......我可以使用什么事件?也许我不使用它的权利...?控制TreeView中节点的图像

+0

这是wpf还是winforms? – Mathias 2010-04-03 17:41:07

回答

0

我认为你必须保持扩大的最后一个节点的参考,因此如果用户可以更改它以后

0

嗯,我不知道如果我理解正确的,但实际上,在一个文件夹资源管理器上下文,展开另一个节点,则不需要在之前扩展的节点上执行任何特定操作。如果用户再次单击它,则可以使用BeforeCollapse事件将其更改回来。它会适合你的需求吗?

3

我假设您只想在选择给定节点时更改显示的TreeNode图像。我不打算在这里解决每个TreeNode带有子节点的文件夹图标的问题:我想如果你掌握了这里发生的事情,那么添加一个(第三)图像和“正确的事情“来使文件夹显式化:然后,如果您愿意,可以扩展该文件夹,因此具有”无子节点“的节点可以具有用于选定/未选中的不同图标。

(1添加一个ImageList到窗体与两个图像:索引#图像0将是默认的(未选)树节点图像

(2添加AfterSelect事件处理程序到您的TreeView:改变形象在“选择”图像

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

你会注意到,作为选择的节点发生变化:。之前选择的树节点的图像将自动恢复到使用它的默认图像(索引#0在ImageList)

注意:恕我直言,这很重要他重新区分在TreeView中展开TreeNode并在TreeView中选择TreeNode:通过单击“+”图标可以展开任何TreeNode(带有子节点):但不会选中它。当然,双击将同时展开和选择。