当前位置:  开发笔记 > 编程语言 > 正文

如何为TreeView中的某些节点而不是所有节点设置图像?

如何解决《如何为TreeView中的某些节点而不是所有节点设置图像?》经验,为你挑选了4个好方法。

我有一个TreeViewWindows窗体控件ImageList,我希望一些节点显示图像,但其他节点没有图像.

希望图像应该是空白区域.我希望图像看起来像TreeView在没有ImageList时会绘制的线条.如何在不诉诸这种笨拙的黑客的情况下,为某些项目而不是其他项目绘制图像?



1> John Fischer..:

您需要设置ImageIndex,并SelectedImageIndex为一个数字,比数值在数较高ImageList.例如,如果您创建此节点并将其添加到您的TreeView:

TreeNode node1 = new TreeNode(string.Empty, 12, 12); // imageList1.Count = 5

你将有一个隐形TreeNode插入你的TreeView.我改变了我的背景颜色,TreeView它仍然是看不见的.

(我用谷歌搜索了一段时间,我最终找到了答案:http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms/2006-09/msg00322.html)


这是MS在某处记录的吗?我会谨慎使用这种技术,因为听起来像是在未来版本的框架中可能无法兼容的那种东西.

2> MtnManChris..:

我选择做的是为那些TreeView不应该有图像的节点使用点图像.

带有图像点的TreeNode

我将此图像添加为列表中的最后一个图像,如果该项目不应该有图像我将其设置为 ImageList.Images.Count-1



3> Martin Brown..:

我尝试了一次,我认为不可能.

如果你试图同时设置ImageKeyImageIndex以"未设置"值控制只是默认ImageIndex为0下面的代码:

treeView.ImageKey = "Value";
Debug.WriteLine(treeView.ImageIndex);
treeView.ImageKey = null;
Debug.WriteLine(treeView.ImageIndex);
treeView.ImageIndex = -1;
Debug.WriteLine(treeView.ImageIndex);

产生输出:

-1
0
0

这种方式告诉您控件开发人员希望确保始终存在默认图像.那只是让你害怕的黑客选择.



4> 小智..:

我发现在TreeView上使用StateImageList而不是ImageList只会在TreeNode上的StateImageIndex等于或大于0时显示图像


这似乎工作得很好。
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有