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

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

870
0


      В .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». После успешной компиляции и запуска вашего проекта у вас откроется диалоговое окно выбора директории для сканирования и вывода структуры выбранного каталога в виде древовидной структуры.

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

ЧИТАТЬ ТАКЖЕ:  Подключение к SQL серверу HP Web JetAdmin: Справочник по C#

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

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь