Bry*_*ter 10 c# treeview winforms
我正在编写自己的基于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 + "\\Roaming\\Launcher")))
{
}
else
{
Directory.CreateDirectory(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "\\Roaming\\Launcher");
}
DirectoryInfo launcherFiles = new DirectoryInfo(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "\\Roaming\\Launcher");
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;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的主要问题是将TreeList的ImageList图标添加到特定节点.我知道我需要添加:
lstPrograms.ImageList.Images.Add(Icon.ExtractAssociatedIcon());
Run Code Online (Sandbox Code Playgroud)
要将图标实际添加到图像列表中,如何获取该特定图像的索引,然后将其添加到TreeView其相关文件中?
Ale*_*ici 15
首先,将图像添加为资源并定义图像列表:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,设置以下ImageList属性TreeView:
treeView1.ImageList = Form1.ImageList;
Run Code Online (Sandbox Code Playgroud)
然后,在为特定节点创建节点时,使用:
applicationNode.ImageKey = "Application";
applicationNode.SelectedImageKey = "Application";
Run Code Online (Sandbox Code Playgroud)