Windows Management Instrumentation. Опрос свойств, методов и описателей. Разработка компонента WMIControl, страница 9

Мы уже ввели в состав класса WMIControl объект images класса ImageList, а также объект treeImages в состав класса FileSystemControl. Оба эти объекта должны ссылаться на сформированные списки изображений. Немного позже вы создадите изображения дисков и папок и вставите их в список treeImages, а сейчас потренируемся в создании произвольного дерева. Программист должен уметь формировать не только дерево файловой системы, но и любое другое (дерево отделов, заказов, документов, и т.д.). При этом надо уметь связывать растровые изображения с узлами дерева. Покажем, как это делается. Сначала создадим 6 тестовых изображений.

¨  В контекстном меню проекта Library выберите команду Add4Add New Item.

¨  В появившемся диалоге (окно Categories) найдите узел General, а в окне TemplatesBitmap File и нажмите Open.

¨  Задайте размеры нового изображения (16, 16), которые соответствуют стандарту для иконок файлового дерева. Проще всего в качестве изображения задать текст в виде цифр (1, 2, . . ,6). Текст поможет понять логику управления структурой дерева. Для ввода текста пользуйтесь кнопкой A на Toolbar Image Editor.

¨  После создания одного изображения, остальные пять удобно копировать, используя технику drag&drop.

¨  Переименуйте файлы (клавиша F2) и измените изображения. Для этого поставьте фокус в само изображение, нажмите Delete (для стирания), кнопку А (на Toolbar), текущую цифру, Enter.

¨  Теперь добавьте в список images все созданные изображения. Для этого выделите компонентimages, нажмите кнопку Collection в строке Images окна свойств и, нажимая кнопку Add, поочередно вставьте все изображения.

¨  Нажмите Ctrl+Shift+S (Save All), закройте окна всех изображений, выделите сразу все файлы изображений и в контекстном меню дайте команду Exclude from Project. Напомню, что нам нужны не отдельные файлы, а список изображений, в который изображения из файлов уже перекочевали.

¨  Создайте обработчик события Load компонента WMIControl и вставьте в него строку кода:

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

Разработка каркаса клиентского приложения

Для того, чтобы убедиться в способности управлять обликом дерева необходимо построить проект и внедрить наш компонент в форму клиентского приложения Client. Для этого:

¨  Дайте команду Rebuild для проекта Library, и перейдите к проекту Client. Убедитесь, что он активен. Если — нет, то сделайте его активным (команда Set as SturtUp Project), переименуйте файл Form1.cs в MainForm.cs, и согласитесь с предложением переименовать класс Form1 в MainForm.

¨  Перейдите в режим дизайна класса MainForm и задайте размеры его окна (760; 620).

¨  В окне Toolbox возьмите и положите на формуToolStrip. Задайте свойства: Name = toolStrip. Добавьте на панель toolStrip кнопку. Задайте ее свойства: Name=btnShowHidden, CheckOnClick=True, CheckState = Unchecked, Text=Show Hidden.

¨  Возьмите в окне Toolbox элемент SplitContainer. Задайте свойства: Name = splitContainer, Dock=Fill, Orientation=Horizontal.

Если вы перепутали порядок действий, то SplitContainer может оказаться под ToolStrip. Для того, чтобы это исправить (вытащить SplitContainer из под ToolStrip) надо в контекстном меню SplitContainer'а дать команду Bring To Front. В SplitContainer достаточно сложно перевести фокус, но через это надо пройти.

¨  Возьмите элемент типа TabControl и положите его на верхнюю панель splitContainer. Задайте свойства: Name = tabControl, Dock=Fill.

¨  В окне его свойств найдите TabPages и нажмите кнопку (Collection).

¨  Добавьте страницы (TabPages) так, чтобы их количество стало равно 5. Измените свойства Text каждой страницы: WMI Classes, FileSystem, SysInfo, Services, Processes. Свойства Name замените на: tabClasses, tabFileSystem, tabSysInfo,tabServices,tabProcesses.

¨  Добавьте (в нижнюю панель splitContainer) элемент ListBox, который будет использован в качестве журнала событий. Свойства: Name=logList, Dock=Fill.