我有一个TreeView
Windows窗体控件ImageList
,我希望一些节点显示图像,但其他节点没有图像.
我不希望图像应该是空白区域.我不希望图像看起来像TreeView在没有ImageList时会绘制的线条.如何在不诉诸这种笨拙的黑客的情况下,为某些项目而不是其他项目绘制图像?
您需要设置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)
我选择做的是为那些TreeView
不应该有图像的节点使用点图像.
我将此图像添加为列表中的最后一个图像,如果该项目不应该有图像我将其设置为 ImageList.Images.Count-1
我尝试了一次,我认为不可能.
如果你试图同时设置ImageKey
并ImageIndex
以"未设置"值控制只是默认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
这种方式告诉您控件开发人员希望确保始终存在默认图像.那只是让你害怕的黑客选择.
我发现在TreeView上使用StateImageList而不是ImageList只会在TreeNode上的StateImageIndex等于或大于0时显示图像