我正在用C#开发树形视图,其中要加载目录和文件。 TreeView
和目录已成功加载。我需要在每个树节点上都具有复选框,并且还需要具有相应的图标(例如,用于目录-文件夹图标,对于文件-文件图标)。当我尝试这样做时,复选框和图标会重叠。以下是一些快照-
以下是Form1.Designer.cs
文件中的“图像列表”代码:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0,"Folder_256x256.png");
this.imageList1.Images.SetKeyName(1,"document-management-big.png");
以下是Form1.cs
文件中的目录和文件加载代码:
public void LoadDirectory(string Dir)
{
DirectoryInfo di = new DirectoryInfo(Dir);
//MessageBox.Show(di.Name.ToString());
//Setting ProgressBar Maximum Value
progressBar1.Maximum = Directory.GetFiles(Dir,"*.*",SearchOption.AllDirectories).Length + Directory.GetDirectories(Dir,SearchOption.AllDirectories).Length;
TreeNode tds = treeView1.Nodes.Add(di.Name);
tds.Tag = di.FullName;
tds.StateImageIndex = 0; //Code for loading/linking with icon
LoadFiles(Dir,tds);
LoadSubDirectories(Dir,tds);
}
private void LoadSubDirectories(string dir,TreeNode td)
{
// Get all subdirectories
string[] subdirectoryEntries = Directory.GetDirectories(dir);
// Loop through them to see if they have any other subdirectories
foreach (string subdirectory in subdirectoryEntries)
{
DirectoryInfo di = new DirectoryInfo(subdirectory);
TreeNode tds = td.Nodes.Add(di.Name);
tds.StateImageIndex = 0; //Code for loading/linking with icon
tds.Tag = di.FullName;
LoadFiles(subdirectory,tds);
LoadSubDirectories(subdirectory,tds);
UpdateProgress();
}
}
private void LoadFiles(string dir,TreeNode td)
{
string[] Files = Directory.GetFiles(dir,"*.*");
// Loop through them to see files
foreach (string file in Files)
{
FileInfo fi = new FileInfo(file);
TreeNode tds = td.Nodes.Add(fi.Name);
tds.Tag = fi.FullName;
tds.StateImageIndex = 1; //Code for loading/linking with icon
UpdateProgress();
}
}
通过在CheckBox
文件中编写代码,可以直接在TreeView
中启用Form1.Designer.cs
:
this.treeView1.CheckBoxes = true;
问题已经得到解释-图标和复选框重叠。请帮助我。根据我的研究,互联网上没有任何解决方案。
谢谢!