Настройка изображений из значков в TreeView

Я пишу свой собственный запуск приложений на основе C#, и, пока я получаю его, чтобы заполнить TreeView и запустить ярлыки приложений в нем, я не могу понять, как добавить значки в виде изображений в TreeView. Мой текущий код для получения файлов:

    private void homeMenu_Load(object sender, EventArgs e)
    {
        this.ShowInTaskbar = false;
        if (Directory.Exists((Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "RoamingLauncher")))
        {

        }
        else
        {
            Directory.CreateDirectory(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "RoamingLauncher");
        }

        DirectoryInfo launcherFiles = new DirectoryInfo(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "RoamingLauncher");

        lstPrograms.Nodes.Add(CreatingDirectoryTreeNode(launcherFiles));

        lstPrograms.Sort();

    }

    private static TreeNode CreatingDirectoryTreeNode(DirectoryInfo directoryInfo)
    {
        var directoryNode = new TreeNode(directoryInfo.Name);

        foreach (var directory in directoryInfo.GetDirectories())
        {
            directoryNode.Nodes.Add(CreatingDirectoryTreeNode(directory));
        }

        foreach (var file in directoryInfo.GetFiles())
        {
            directoryNode.Nodes.Add(new TreeNode(file.Name));
        }

        return directoryNode;
    }

основная проблема, с которой я столкнулся, - это добавление значка в ImageList дерева к конкретному узлу. Я знаю, что мне нужно добавить:

lstPrograms.ImageList.Images.Add(Icon.ExtractAssociatedIcon());

чтобы добавить значок в список изображений, как мне это сделать индекс конкретного изображения, затем добавьте его в TreeView С его относительной файл?

1 ответов


Сначала добавьте изображения в качестве ресурсов и определите свой список изображений:

static ImageList _imageList;
public static ImageList ImageList
{
    get
    {
        if (_imageList == null)
        {
            _imageList = new ImageList();
            _imageList.Images.Add("Applications", Properties.Resources.Image_Applications);
            _imageList.Images.Add("Application", Properties.Resources.Image_Application);
        }
        return _imageList;
    }
}

затем ImageList свойства TreeView:

treeView1.ImageList = Form1.ImageList;

затем, когда вы создаете узлы для определенного узла, используйте:

applicationNode.ImageKey = "Application";
applicationNode.SelectedImageKey = "Application";