Построение дерева папок и файлов на устройствах pc
Скачать 1.42 Mb.
|
Построение дерева папок и файлов на устройствах PCЗапустим Visual Studio (версия не важна). Создадим новый проект по шаблону C# - Windows Forms Application Наша цель создать экранную форму, в которой будут в виде древовидной структуры изображаться все папки и файлы на устройствах нашего компьютера. Для этого поместим на экранную форму элемент управления типа TreeView. Назовем этот элемент filesTree. Свойству Dock назначим значение Fill. Таким образом, этот элемент будет занимать все поле формы. Выберем этот элемент и создадим для него изначально пустые обработчики событий AfterExpand и AfterSelect. Выберем форму целиком и создадим для нее обработчик события Load. Это событие будет возникать при загрузке нашей формы. Поместим в обработчик этого события вызов метода FillTree(). Этот метод будет создавать начальное дерево. Рассмотрим этот метод подробно. DriveInfo[] allDrives = DriveInfo.GetDrives(); Массив allDrives будет содержать объекты класса DriveInfo, который хранит информацию об устройстве. Метод GetDrives() возвращает массив с информацией о всех устройствах системы. В цикле foreach (DriveInfo d in allDrives) { TreeNode trn = new TreeNode(d.Name); trn.Tag = d; filesTree.Nodes.Add(trn); мы пройдем по всем устройствам. Для каждого устройства создадим объект класса TreeNode. Этот класс предтставляет вершину в дереве элемента filesTree. В свойстве Tag сохраним ссылку на устройство d (тип DriveInfo). Для вершин, которые представляют устройства, зададим цвет фона LightCoral (При выполнении лабораторной работы подберите другой цвет, который будет лучше смотреться). Далее проверяем готово ли устройство для операций ввода/вывода. Если устройство готово, вычисляем размер свободного пространства на устройстве и формируем строку подсказки, которая будет всплывать, когда пользователь наведет курсор мышки на эту вершину. С каждым устройством система связывает корневую папку. Строка кода DirectoryInfo TheFolder = new DirectoryInfo(d.Name); создает объект класса DirectoryInfo, который содержит информацию о папке (директории по старинке). Далее каждая вершина TreeNode имеет коллекцию Nodes дочерних вершин. В следующем цикле мы проходим по всем папкам, которые находятся в корневой папке, и для каждой такой папки создаем вершину в дереве с цветом фона Cyan. В свойстве Tag сохранем ссылку на дочернюю папку. foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories()) { TreeNode trn1 = new TreeNode(NextFolder.Name); trn.Nodes.Add(trn1); trn1.Tag = NextFolder; trn1.BackColor = Color.Cyan; } В следующем цикле делаем тоже самое, но только для вложенных файлов. foreach (FileInfo NextFile in TheFolder.GetFiles()) { TreeNode trn1 = new TreeNode(NextFile.Name); trn1.BackColor = Color.Green; trn.Nodes.Add(trn1); } Вершины, представляющие файлы будут зелеными. Итак метод FillTree() сформирует нижнюю часть дерева каталогов, которая растет непосредственно из корня. А как же с другими папками и файлами, которые находятся выше в дереве? А вот их мы будем добавлять в дерево постепенно по мере необходимости, когда пользователь будет раскрывать вершину дерева, нажимая на плюсик возле вершины. Это сделано потому, что нам просто может не хватить памяти, чтобы изобразить все дерево, и кроме того загрузка всего дерева будет занимать много времени. Поэтому мы создадим метод FillFolder, который будет добавлять дочерние вершины к папке И вызывать это метод в обработчике события AfterExpand Ну и наконец по событию выбора вершины, мы проверим, что эта вершина представляет файл, и выведем окно с датой создания этого файла. |