仅在C#中的自定义图标上选择时,TreeView节点图标会更改

时间:2015-02-22 02:01:15

标签: c# treeview icons

所以我在C#中有一个TreeView,我正在通过P / Invoke为文件夹加载图标。它是有效的,但在自定义的图标上(可以这么说),它们会变成一些奇怪的图标,如下图所示:

Weird select

在“常规”文件夹中,即没有自定义图标的文件夹,这不会发生。还有像我的HDD图标这样的东西,它不会发生。这是我用来设置图标键的代码

ImageKey = node.FileInfo.UniqueIcon;
SelectedImageKey = ImageKey;

正如您所看到的,SelectedImageKey无法与ImageKey不同。但是,该图标仍被设置为ImageList的第0个索引。我已经通过调试器确认在添加对象后密钥保持不变。

所以任何想法为什么只会出现一些图标?

感谢。


更新

我找到了一种解决方法,但我并没有将其称为解决方案。如果我将其添加到我的代码中:

private void FolderTree_BeforeSelect(object sender, TreeViewCancelEventArgs e) {            
   e.Node.SelectedImageKey = e.Node.ImageKey;
}

我不是把它称为解决方案,因为该命令只需要运行一次才能运行。我知道,因为如果我把它放在AfterExpand事件上,那么在它为一个坏事件做之后,所有其他人都会在那之后工作,甚至在它们被扩展之前。所以它就像之前没有点击的东西,重置只有一个让所有其他人工作。

0 个答案:

没有答案