Проблема с загрузкой папок с диска

305
27 сентября 2017, 08:00

Проблем такая. Есть элемент TreeView, в него при загрузки формы добавляются все диски компьютера(Скриншот ниже). Когда происходит двойной щелчок по выбранному диску должны загрузиться все папки. Когда делаю двойной щелчок по "C:\" все корректно загружается, а когда по "D:\" загружаются папки диска C(диск D не пустой). Помогите решить эту проблему.

Вот код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace FileManager
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            DriveInfo[] drives = DriveInfo.GetDrives();
            foreach(DriveInfo crrDrive in drives)
            {
                treeView1.Nodes.Add(crrDrive.Name);
            }
        }
        private void treeView1_DoubleClick(object sender, EventArgs e)
        {
            treeView1.Nodes[treeView1.SelectedNode.Level].Nodes.Clear();
            DirectoryInfo dir = new DirectoryInfo(treeView1.SelectedNode.Text);
            DirectoryInfo[] dirs = dir.GetDirectories();
            foreach(DirectoryInfo crrDir in dirs)
            {
                treeView1.Nodes[treeView1.SelectedNode.Level].Nodes.Add(crrDir.Name);
            }
        }
    }
}
Answer 1

У вас загружается папка D в 0-ой элемент (то есть в вашем случае в диск C).

Все дело в данной строке treeView1.Nodes[treeView1.SelectedNode.Level].Nodes.Add(crrDir.Name); - где treeView1.SelectedNode.Level дает глубину узла, а вам нужен индекс. Поменяйте на treeView1.SelectedNode.Index.

Ну а также тут treeView1.Nodes[treeView1.SelectedNode.Level].Nodes.Clear(); тоже не забудьте поменять.

READ ALSO
Unity3d - Изменение Text через GetComponent C#

Unity3d - Изменение Text через GetComponent C#

В сцене есть Scrolling Menu которое создает префабы с содержимым Sprite и добавлена кнопка Select и Buy которые активируются в зависимости от текущего...

336
C# | Разделить строку на массив [требует правки]

C# | Разделить строку на массив [требует правки]

Использовать функцию StringSplit():

301
Динамическая подгрузка DLL

Динамическая подгрузка DLL

Допустим, у меня есть метод:

319
Как правильно создать gulp файл под сборку с babel для es6? сборка переводит класс с require который не работает в браузере

Как правильно создать gulp файл под сборку с babel для es6? сборка переводит класс с require который не работает в браузере

ЗдравствуйтеХочу делать сборку с gulp-babel, вроде как оно пересобирает проект под старый стандарт, но классы пересоздает с каким-то "require", и браузер...

335