Поделиться через


Создание и использование компонентов в Visual Basic

Компонент представляет собой класс, реализующий интерфейс System.ComponentModel.IComponent, или производный прямо или косвенно от класса, реализующего интерфейс IComponent. Компонент .NET Framework — это многократно используемый объект, который может взаимодействовать с другими объектами и обеспечивает управление внешними ресурсами и поддержку режима проектирования.

Важной особенностью компонентов является то, что они поддерживают проектирование, что означает, что класс-компонент может быть использован в интегрированной среде разработки Visual Studio. Компонент можно добавить в "Панель элементов", перетащить на форму и манипулировать им на поверхности проектирования. Отметим, что базовая поддержка режима проектирования для компонентов встроена в .NET Framework; разработчику компонентов не нужно прикладывать дополнительные усилия, чтобы воспользоваться ее преимуществами при проектировании.

Элемент управления похож на компонент, так как он тоже поддерживает проектирование. Но в отличие от компонента, элемент управления предоставляет пользовательский интерфейс. Элемент управления должен быть производным от одного из базовых классов элементов управления: Control или Control.

Когда следует создавать компонент

Если класс будет использоваться на поверхности проектирования (например Windows Forms или конструктора Web Forms), но у него нет пользовательского интерфейса, он должен быть компонентом и реализовывать IComponent либо быть производным от класса, который прямо или косвенно реализующего интерфейс IComponent.

Классы Component и MarshalByValueComponent являются базовой реализацией интерфейса IComponent. Главное различие между этими классами состоит в том, что маршалинг класса Component производится по ссылке, а класса IComponent — по значению. Следующий список содержит общие принципы реализации.

  • Если компонент нужно будет маршалировать по ссылке, он должен быть производным от класса Component.

  • Если компонент нужно будет маршалировать по значению, он должен быть производным от класса MarshalByValueComponent.

  • Если компонент не может быть производным от одной из базовых реализации из-за единичного наследования, реализуйте интерфейс IComponent.

Дополнительные сведения о поддержке режима проектирования см. в разделах Атрибуты времени разработки для компонентов и Расширение поддержки времени разработки.

Классы компонентов

Пространство имен System.ComponentModel содержит классы, реализующие поведение компонентов и элементов управления во время проектирования и выполнения. Данное пространство имен включает базовые классы и интерфейсы, предназначенные для реализации преобразователей атрибутов и типов, для привязки к источникам данных и для лицензирования компонентов.

Основные классы компонентов:

  • Component. Базовая реализация интерфейса IComponent. Этот класс обеспечивает совместное использование объектов приложениями.

  • MarshalByValueComponent. Базовая реализация интерфейса IComponent.

  • Container. Базовая реализация интерфейса IContainer. Этот класс инкапсулирует ноль или более компонентов.

Некоторые классы, используемые для лицензирования компонентов:

  • License. Абстрактный базовый класс для всех лицензий. Лицензия предоставляется на конкретный экземпляр компонента.

  • LicenseManager. Предоставляет свойства и методы, необходимые для добавления лицензии на компонент и для управления объектом LicenseProvider.

  • LicenseProvider. Абстрактный базовый класс для реализации поставщика лицензий.

  • LicenseProviderAttribute. Задает класс LicenseProvider, используемый с тем или иным классом.

Классы, обычно используемые для описания и постоянного хранения компонентов.

  • TypeDescriptor. Содержит сведения о характеристиках компонента, например его атрибутах, свойствах и событиях.

  • EventDescriptor. Предоставляет сведения о событии.

  • PropertyDescriptor. Предоставляет сведения о свойстве.

Связанные разделы

См. также

Задачи

Практическое руководство. Доступ к поддержке во время разработки в Windows Forms

Практическое руководство. Расширение внешнего вида и функциональности элементов управления в режиме конструктора

Практическое руководство. Выполнение настраиваемой инициализации для элементов управления в режиме конструктора