Справочник по C#

    Исходники по языку программирования CSharp

    Представление любого каталога в виде древовидной структуры с использованием элемента управления «TreeView»: Справочник по C#

    /
    /
    /
    146 Views


          В .NET Framework присутствует класс «TreeView», который представляет визуальный элемент управления для отображения иерархических данных в древовидной структуре, содержащей элементы, которые можно развернуть и свернуть. Рассмотрим представление любого каталога в виде древовидной структуры с использованием элемента управления «TreeView».
          Создайте проект «Windows Form» в «Microsoft Visual Studio» и добавьте на главную форму вашего проекта элемент управления «TreeView». Сделайте двойной клик левой клавишей мыши по любому свободному месту главной формы, вы перейдете в редактор кода с установкой курсора в автоматически созданном методе «Form1_Load», события «Load», выполняющегося при загрузке формы. Вставьте в тело данного метода приведенный ниже листинг.

    //Создание класса для вывода окна выбора директории
    FolderBrowserDialog fbd = new FolderBrowserDialog();
    
    //Выводим диалоговое окно для выбора директории.
    // Данный класс возвращает следующие значения:
    // 1) Объект System.Windows.Forms.DialogResult.OK,
    //    если пользователь нажимает кнопку
    //    ОК в диалоговом окне;
    // 2) Объект System.Windows.Forms.DialogResult.Cancel,
    //    если пользователь закрывает диалоговое окно.
    DialogResult result = fbd.ShowDialog();
    
    //Если пользователь выбрал директорию
    //и нажал ОК, то запускаем процесс сканирования
    if (result == DialogResult.OK)
    {
    //Вызов метода сканирования с
    //передачей в качестве параметра, пути к
    //выбранной директории
    InitFolders(fbd.SelectedPath);
    }

          Добавьте приведенные ниже два метода сканирования и вывода указанной директории в элемент управления «TreeView», в листинг главной формы.

    private void InitFolders(string path)
    {
    //Отключаем любую перерисовку
    //иерархического представления.
    treeView1.BeginUpdate();
    
    //Инициализируем новую переменную предоставляющую методы экземпляра
    //класса для создания, перемещения и перечисления
    //в каталогах и подкаталогах.
    System.IO.DirectoryInfo di;
    try
    {
    //Вызываем метод GetDirectories с передачей в качестве параметра, пути к
    //выбранной директории. Данный метод возвращает
    //массив имен подкаталогов.
    string[] root = System.IO.Directory.GetDirectories(path);
    
    if (root.Rank > 1)
    {
    //Проходим по всем полученным подкаталогам.
    foreach (string s in root)
    {
    try
    {
    //Заносим в переменную информацию
    //о текущей директории.
    di = new System.IO.DirectoryInfo(s);
    //Вызов метода сканирования с
    //передачей в качестве параметра, информации
    //о текущей директории и объект
    //System.Windows.Forms.TreeNodeCollection,
    //который предоставляет узлы
    //дерева, назначенные элементу управления
    //иерархического представления.
    BuildTree(di, treeView1.Nodes);
    }
    catch { }
    }
    }
    else
    {
    di = new System.IO.DirectoryInfo(path);
    BuildTree(di, treeView1.Nodes);
    }
    }
    catch { }
    //Разрешаем перерисовку иерархического представления.
    treeView1.EndUpdate();
    }
    //Процесс получения папок и файлов
    private void BuildTree(System.IO.DirectoryInfo directoryInfo, TreeNodeCollection addInMe)
    {
    //Добавляем новый узел в коллекцию Nodes
    //с именем текущей директории и указанием ключа
    //со значением "Folder".
    TreeNode curNode = addInMe.Add("Folder", directoryInfo.Name);
    
    //addInMe.Add(directoryInfo.FullName, directoryInfo.Name,
    //тут можно указать номер картинки для узла из imageCollection);
    
    //Перебираем папки.
    foreach (System.IO.DirectoryInfo subdir in directoryInfo.GetDirectories())
    {
    //Запускам процесс получения папок и фалов
    //с текущей найденной директории.
    BuildTree(subdir, curNode.Nodes);
    }
    
    //Перебираем файлы
    foreach (System.IO.FileInfo file in directoryInfo.GetFiles())
    {
    //Добавляем новый узел в коллекцию Nodes
    //С именем текущей директории и указанием ключа
    //со значением "File".
    curNode.Nodes.Add("File", file.Name);
    
    //curNode.Nodes.Add("File", file.Name,
    //тут можно указать номер картинки для узла из imageCollection);
    }
    }

          Перейдите в свойства элемента управления «TreeView» и выставьте значение «Fill», у свойства «Dock». Запустите проект, нажав на клавишу «F5». После успешной компиляции и запуска вашего проекта у вас откроется диалоговое окно выбора директории для сканирования и вывода структуры выбранного каталога в виде древовидной структуры.

    Ссылка для скачивания примера: Яндекс.Диск

    Представление любого каталога в виде древовидной структуры с использованием элемента управления «TreeView»: Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9