Windows Management Instrumentation. События в WMI. Библиотека классов MyWMI. Особенности работы с большим деревом, страница 7

10.  На страницу pageExplorer поместите кнопку (как показано на рисунке выше) со следующими свойствами: Text = пусто, Name = bHidden, Size = (30, 30), Location = (0, 0), ToolTip on toolTip = Show hidden directories. Наклейте на нее изображение, нажав (в строке свойства Image) кнопку открытия файлового диалога и выбрав подходящее изображение.

11.  Добавьте (в нижнюю часть формы) TextBox, который будет использован в качестве цветной строки состояния. Свойства: Name = info, MultiLine = True, ReadOnly = True, Location = (0; 512), Dock = Fill, BackColor = WhiteSmoke, BorderStyle = None, Font = (Arial; 9.75pt; style=Bold), TabStop = False, Size = (696; 70).

12.  Наконец, добавьте наш компонент ExplorerControl и задайте ему свойства: Name = explorer, Size = (776; 455), Location = (0, 33).

13.  Запустите решение (из двух проектов) и убедитесь, что главное окно отбражает наш компонент.

14.  Потренируйтесь в создании новых ветвей дерева, вставляя в ExplorerControl_Load фрагменты кода.

    tree.Nodes.Add(new TreeNode("One",0,5));

    tree.Nodes[0].Nodes.Add(new TreeNode("Two",1,5));

    tree.Nodes[0].Nodes.Add(new TreeNode("Three",2,5));

Запустите, а затем опробуйте более сложную структуру кроны дерева:

    tree.Nodes.Add(new TreeNode("One",0,5));

    TreeNode node = tree.Nodes[0];

    node.Nodes.Add(new TreeNode("Two",1,5));

    node.Nodes.Add(new TreeNode("Three",2,5));

    node.Nodes[0].Nodes.Add(new TreeNode("Four",3,5));

    node.Expand();

    node.Nodes[0].Expand();

Просмотрите справку по классу TreeNode, выясните смысл параметров его конструктора, познакомьтесь с методами класса и научитесь управлять структурой и состоянием дерева программным способом (с помощью кода). Способны-ли вы теперь создать дерево с любой желаемой структурой? Если нет, то продолжайте тренировку до тех пор, пока не ответите на поставленный вопрос утвердительно.

Удалите из списка изображений все элементы, уничтожьте соответствующие bitmap-файлы и наполните treeImages изображениями дисков и папок. Учтите, что желательно (а в нашем проекте необходимо) иметь по два изображения для каждого элемента файловой системы. Они соответствуют неактивному и активному (Selected) состояниям. Так как мы собираемся ввести еще один (корневой) узел с именем "My Computer", то целесообразно договориться о способе нумерации (индексирования) иконок, используемых деревом. Пусть он будет таким:

Индекс

Тип узла

Состояние

0

My Computer

1

My Computer

Selected

2

LocalDisk

3

LocalDisk

Selected

4

CDROM

5

CDROM

Selected

6

Removable disk

7

Removable disk

Selected

8

Network disk

9

Network disk

Selected

10

Folder

11

Folder

Selected

Сортировка строк в элементе ListView

В левом окне будет изображено файловое дерево, а в правом — список файлов, хранящихся в папке, которая выбрана слева. Для того, чтобы список файлов, отображаемый в элементе ListView, можно было сортировать, нажимая на заголовки его столбцов, необходимо создать вспомогательный класс, реализующий интерфейс IComparer. Он нужен для того, чтобы гибко изменять функцию сравнения данных в зависимости от номера столбца списка.

Дело в том, что в столбцах расположены данные разных типов. В первом столбце будут отображены имена файлов, во втором его размер (типа double так как мы собираемся выразить размер в килобайтах, а иногда и в байтах), в третьем — дата  создания файла, в четвертом — дата изменения. Сортировка должна учитывать факт различия типов данных. Кроме того, режим сортировки (по возрастанию, или по убыванию), зависит от четности щелчка по данной колонке и это также необходимо учесть при сравнении двух объектов.