我有一个带有ImageList
的TreeView
windows窗体控件,我希望其中一些节点显示图像,但其他节点不显示图像。
我不想在图像应该出现的地方留出空格。我不希望图像看起来像没有ImageList时TreeView会绘制的线条。我如何让它为一些项目而不是其他项目绘制图像,而不是求助于像那样笨拙的黑客?
发布于 2008-11-04 16:36:21
我试过一次,但我认为这是不可能的。
如果您尝试将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
这种方式告诉您,控件开发人员希望确保始终存在默认图像。我担心,这只会给你留下黑客的选择。
发布于 2009-06-17 20:55:49
您需要将ImageIndex
和SelectedImageIndex
设置为一个大于ImageList
中的值数的数字。例如,如果您创建此节点并将其添加到TreeView
中
TreeNode node1 = new TreeNode(string.Empty, 12, 12); // imageList1.Count = 5
您将在TreeView
中插入一个不可见的TreeNode
。我改变了我的TreeView
的背景颜色,但它仍然是看不见的。
(我用谷歌搜索了一段时间,最终在这里找到了答案:http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms/2006-09/msg00322.html)
发布于 2013-12-17 00:49:59
我选择做的是使用点的图像来表示那些不应该有图像的TreeView
节点。
我将此图像添加为列表中的最后一个图像,如果该项目不应包含图像,则将其设置为ImageList.Images.Count-1
https://stackoverflow.com/questions/261660
复制相似问题