TreeView不显示ImageList中的图像

时间:2012-04-02 15:57:14

标签: c# winforms treeview

我有TreeView,显示CheckBox es:

enter image description here

我想检查给定目录是否包含“.mdf”数据库,如果是,请检查它是否附加在所选服务器实例上。如果附加了数据库,则会针对该节点显示图像,如果未附加,则显示不同的图像。注意:图像为.png格式,大小为32x32 ......

我从ImageList

填充Properties.Resources
mainImageList = new ImageList();
mainImageList.Images.Add(Properties.Resources.Database);
mainImageList.Images.Add(Properties.Resources.DatabaseGrey);

然后我遍历树并添加相关图像

public static void RecursiveAddImage(TreeNode treeNode, List<string> attachedList)
{
    if (String.Compare(Path.GetExtension(treeNode.Text), ".mdf", true) == 0)
    {
        string databaseName = treeNode.Text.Replace(".mdf", String.Empty);
        if (attachedList.Contains(databaseName))
        {
            treeNode.ImageIndex = 0;
            treeNode.SelectedImageIndex = 0;
        }
        else
        {
            treeNode.ImageIndex = 1;
            treeNode.SelectedImageIndex = 1;
        }
    }
    foreach (TreeNode node in treeNode.Nodes)
        RecursiveAddImage(node, attachedList);
}

上面的代码经过循环而没有任何投诉,找到“.mdf”并且似乎添加了相关的ImageIndexes,但这些没有显示在TreeView中。我在这里做错了什么,我可以在设计时添加ImageList(我似乎也做不到的事情)?

我已经阅读了MSDN documantation的几个帖子,但我仍然无法使其正常工作。一如既往的任何帮助,非常感谢。

2 个答案:

答案 0 :(得分:3)

确保TreeView控件的ImageList属性设置为正确的ImageList引用:

mainImageList = new ImageList();
mainImageList.Images.Add(Properties.Resources.Database);
mainImageList.Images.Add(Properties.Resources.DatabaseGrey);

treeView1.ImageList = mainImageList;

答案 1 :(得分:2)

TreeNode.StateImageIndex= 0;会设置图像列表图像。确保图像列表绑定到Treeview控件,如上所述。