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, можно было сортировать, нажимая на заголовки его столбцов, необходимо создать вспомогательный класс, реализующий интерфейс IComparer. Он нужен для того, чтобы гибко изменять функцию сравнения данных в зависимости от номера столбца списка.
Дело в том, что в столбцах расположены данные разных типов. В первом столбце будут отображены имена файлов, во втором его размер (типа double так как мы собираемся выразить размер в килобайтах, а иногда и в байтах), в третьем — дата создания файла, в четвертом — дата изменения. Сортировка должна учитывать факт различия типов данных. Кроме того, режим сортировки (по возрастанию, или по убыванию), зависит от четности щелчка по данной колонке и это также необходимо учесть при сравнении двух объектов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.