В .NET Framework присутствует класс «TreeView», который представляет визуальный элемент управления для отображения иерархических данных в древовидной структуре, содержащей элементы, которые можно развернуть и свернуть. Рассмотрим представление любого каталога в виде древовидной структуры с использованием элемента управления «TreeView».
Создайте проект «Windows Form» в «Microsoft Visual Studio» и добавьте на главную форму вашего проекта элемент управления «TreeView». Сделайте двойной клик левой клавишей мыши по любому свободному месту главной формы, вы перейдете в редактор кода с установкой курсора в автоматически созданном методе «Form1_Load», события «Load», выполняющегося при загрузке формы. Вставьте в тело данного метода приведенный ниже листинг.
Создайте проект «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». После успешной компиляции и запуска вашего проекта у вас откроется диалоговое окно выбора директории для сканирования и вывода структуры выбранного каталога в виде древовидной структуры.
Ссылка для скачивания примера: Яндекс.Диск
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!