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

11.  В окне Solution Explorer выделите имя проекта Library и в его контекстном меню выберите команду Add4Add New Item.

12.  В диалоге Add New Item выберите тип проекта User Control, задайте имя ExplorerControl.cs и нажмите кнопку Open.

13.  В окне Solution Explorer выделите имя файла Class1.cs и нажмите Delete для того, чтобы удалить этот файл из проекта.

14.  В окне Solution Explorer выделите узел References (проекта Library) и в его контекстном меню выберите команду Add Reference.

15.  В диалоге Add Reference (на вкладке .NET) найдите библиотеку System.Management и нажмите кнопки Select и OK.

16.  Внесите изменения в начальную заготовку класса (файл ExplorerControl.cs) так, как показано ниже, но оставьте нетронутым традиционный код Windows приложения — методы Dispose и InitializeComponent.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.IO;

using System.Management;

using System.Runtime.InteropServices;

namespace Library

{

public class ExplorerControl : UserControl

{

  private Container components = null;

  public ExplorerControl()

  {

    InitializeComponent();

  }

      // Здесь следует традиционный код (методы Dispose и т.д.). Оставьте его, а лучше спрячьте в блок Designer Generated Code.

}

Сейчас важно понять, что мы разрабатываем проект Library. Он создаст DLL, которая будет экспортировать 4 класса, производных от UserControl. Они будут обслуживать 4 вкладки Windows-приложения Client, которое вы видите на рисунке выше. Класс ExplorerControl пока пуст, но мы добавим в него элементы управления и он станет обслуживать первый блок из тех 4-х вкладок, которые присутствуют в приложении Client.

1.  Переведите текущий файл (класс ExplorerControl) в режим дизайна и задайте размеры его окна равными примерно (728; 480). Копируйте числа отсюда и вставляйте в поля окна Properties.

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

3.  Положите на форму элемент типа TreeView. Задайте ему следующие свойства: Name = tree, Dock = Left, Size = 224; 480, ImageList = treeImages; TabIndex = 0.

4.  Положите на форму элемент типа Splitter. Задайте ему следующие свойства: Name = splitter, Location = 224; 0, Dock = Left, TabIndex = 2.

5.  Положите элемент типа ListView. Задайте ему следующие свойства: Name=fileList, Location = 227; 0, Dock = Fill, View = Details, FullRowSelect = true, GridLines = true, BackColor = FloralWhite, TabIndex = 1.

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

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

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

Мы закончили работу с ресурсами и создали первый вариант DLL. Теперь следует вдохнуть жизнь в новый компонент ExplorerControl, который предоставит всем своим пользователям функциональность, сходную с той, какую дает Windows Explorer. Для этого придется разобраться в некоторых технологических деталях управления такими элементами как: TreeView и ListView, а также компонента FileSystemWatcher. В дереве слева мы собираемся отобразить структуру файловой системы, а в списке справа — файлы, имеющиеся в текущей директории, то есть той папке, которая выбрана в дереве слева.

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