所以我在C#中有一个TreeView,我正在通过P / Invoke为文件夹加载图标。它是有效的,但在自定义的图标上(可以这么说),它们会变成一些奇怪的图标,如下图所示:
在“常规”文件夹中,即没有自定义图标的文件夹,这不会发生。还有像我的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
事件上,那么在它为一个坏事件做之后,所有其他人都会在那之后工作,甚至在它们被扩展之前。所以它就像之前没有点击的东西,重置只有一个让所有其他人工作。