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

¨  Так как событие SelectedIndexChanged активно по умолчанию, то указанного результата можно было добиться двойным щелчком по списку. Добавьте этим способом обработчики событий для двух других списков.

¨  В окне Solution Explorer выделите узел Library и в его контекстном меню выберите команду Rebuild. Устраните ошибки, если они появятся.

Разработка каркаса для второго элемента управления

Пока вы еще в тонусе, добавим заготовку для второго элемента управления FileSystemControl.

¨  В контекстном меню текущего проекта Library (будьте внимательны: проекта, а не решения) выберите команду Add4New Item.

¨  В окне диалога выберите тип элемента — UserControl, задайте имя — FileSystemControl.

Мы разрабатываем второй элемент управления, который будет импортирован в главную форму другого приложения (проекта). Оба наших элемента — это классы, производные от UserControl. Они будут обслуживать две первые вкладки Windows-приложения Client, которое вы видите на рис. 2 и рис. 3. Мы добавим в класс FileSystemControl элементы управления и он станет обслуживать второй блок из вкладок, которые вы видите на рис. 2.

¨  Переведите текущий файл (класс FileSystemControl) в режим дизайна и задайте размеры его окна равными примерно (740; 480).

¨  В окне Toolbox возьмите элемент типа ImageList и положите его на форму. Задайте ему имя (свойство Name) treeImages.

¨  Положите на форму SplitContainer с именем splitMain. В его левую панель положите SplitContainer с именем splitLeft и горизонтальной полосой деления. В правую панель splitMain положите еще один SplitContainer с именем splitRight, который также имеет горизонтальную полосу деления (см. рис. 3).

¨  В нижнюю панель контейнера splitLeft положите элемент типа TreeView. Задайте его свойства: Name=tree, ImageList=treeImages; Dock=Fill.

¨  В нижнюю панель контейнера splitRight положите ListView. Задайте свойства: Name=fileList, Dock=Fill, View=Details, FullRowSelect=true, GridLines=true.

¨  В верхнюю панель контейнера splitLeft положите CheckBox. Задайте свойства: Name=checkHidden, Text=Show Hidden, Dock=Fill, BackColor=Info, Font=Comic Sans MS; 10,2pt, Padding= 15; 0; 0; 0.

¨  В верхнюю панель контейнера splitRight положите Label. Задайте свойства: Name=lblDirInfo, Dock=Fill, Autosize=False, BackColor=Info, Font=Comic Sans MS; 10,2pt, Padding= 8; 0; 0; 0.

Введите обработку некоторых событий. Опишем, как сделать это в режиме дизайна.

¨  При активном элементе ListView нажмите кнопку Events, которая расположена в окне Properties, найдите событие ColumnClick и совершите по этой строке двойной щелчок.

¨  Введите обработку событий для TreeView. Активизируйте его, найдите событие BeforeExpand (совершите двойной щелчок), нажмите Ctrl+Tab и повторите эту процедуру для события AfterSelect.

¨  В окне Solution Explorer выделите узел Library и в его контекстном меню выберите команду Rebuild.

Мы закончили работу с ресурсами первых двух компонентов приложения и создали первый вариант DLL Library. Теперь следует вдохнуть жизнь в оба компонента.

Список изображений, ассоциируемый с деревом

Дерево выглядит значительно лучше, если с каждой его ветвью связать растровое изображение (bitmap image). Обычно с деревом ассоциируется список изображений, управляемый объектом класса ImageList (и мы это уже сделали). В общем случае с каждым узлом дерева можно связать два изображения. Одно — для узла в нормальном состоянии, другое — в выбранном. Прежде всего, надо отличать события раскрытия-закрытия узла дерева (Expand-Collapse) от события его выбора (Select). Первое провоцируется нажатием на специальный маркер (со значком + или -), второе — нажатием на текстовую надпись (или растровое изображение). Раскрыть узел можно также и двойным щелчком над именем узла.