В представлении дерева C #, флажок и значок списка изображений перекрываются, как это исправить? - PullRequest
0 голосов
/ 08 ноября 2019

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

Please click to see image

Ниже приведен код списка изображений в файле 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;

Проблема заключается вуже объяснили - значки и флажки перекрываются. Пожалуйста, помогите мне в этом. По моим исследованиям я не могу найти решения в интернете.

Заранее спасибо!

...