Разновидности пользовательских элементов управления
С помощью .NET Framework можно разрабатывать и реализовывать новые элементы управления. Вы можете расширить функциональные возможности знакомого пользовательского элемента управления, а также существующие элементы управления с помощью наследования. Вы также можете создать пользовательские элементы управления, выполняющие собственную отрисовку.
Выбор типа создаваемого элемента управления может быть запутанным. В этом разделе рассматриваются различия между различными типами элементов управления, от которых можно наследовать, и вы можете получить сведения о выборе определенного типа элементов управления для проекта.
Заметка
Сведения о создании элемента управления для использования в веб-формах см. в руководстве по разработке пользовательских серверных элементов управления ASP.NET.
Базовый класс элемента управления
Класс Control является базовым классом для элементов управления Windows Forms. Она предоставляет инфраструктуру, необходимую для визуального отображения в приложениях Windows Forms.
Класс Control выполняет следующие задачи, чтобы обеспечить визуальное отображение в приложениях Windows Forms:
Предоставляет дескриптор окна.
Управляет маршрутизацией сообщений.
Предоставляет события мыши и клавиатуры и много других событий пользовательского интерфейса.
Предоставляет расширенные функции компоновки.
Содержит множество свойств, относящихся к визуальному отображению, например ForeColor, BackColor, Heightи Width.
Обеспечивает поддержку безопасности и потоковой обработки, необходимую для элемента управления Windows Forms, чтобы использовать его как элемент управления Microsoft® ActiveX®.
Так как большая часть инфраструктуры предоставляется базовым классом, довольно легко разрабатывать собственные элементы управления Windows Forms.
Виды элементов управления
Windows Forms поддерживает три типа пользовательских элементов управления: составные , расширенные , и пользовательские . В следующих разделах описаны все виды управления и рекомендации по выбору типа, используемого в проектах.
Составные элементы управления
Составной элемент управления — это коллекция элементов управления Windows Forms, инкапсулированных в общем контейнере. Этот вид управления иногда называется пользовательским элементом управления. Содержащиеся элементы управления называются составными элементами управления.
Составной элемент управления содержит все встроенные функции, связанные с каждым из содержащихся элементов управления Windows Forms, и позволяет выборочно предоставлять и привязывать их свойства. Составной элемент управления также предоставляет большую часть функций обработки клавиатуры по умолчанию без дополнительных усилий по разработке.
Например, составной элемент управления можно создать для отображения данных адреса клиента из базы данных. Этот элемент управления может включать элемент управления DataGridView для отображения полей базы данных, BindingSource для обработки привязки к источнику данных и элемента управления BindingNavigator для перемещения по записям. Вы можете выборочно предоставлять свойства привязки данных, а также упаковать и повторно использовать весь элемент управления из приложения в приложение. Пример составного элемента управления см. в разделе Практическое руководство. Применение атрибутов в элементах управления Windows Forms.
Чтобы создать составной элемент управления, наследуйте от класса UserControl. Базовый класс UserControl обеспечивает маршрутизацию клавиатуры для дочерних элементов управления и позволяет дочерним элементам управления работать как группа. Дополнительные сведения см. в статье Разработка составного элемента управления Windows Forms.
рекомендация
Наследуется от класса UserControl, если:
- Вы хотите объединить функциональные возможности нескольких элементов управления Windows Forms в одну единицу повторного использования.
Расширенные элементы управления
Наследуемый элемент управления можно создать на основе любого существующего элемента управления Windows Forms. С помощью этого подхода можно сохранить все встроенные функции элемента управления Windows Forms, а затем расширить эту функцию, добавив настраиваемые свойства, методы или другие функции. С помощью этого параметра можно переопределить логику рисования базового элемента управления, а затем расширить пользовательский интерфейс, изменив его внешний вид.
Например, можно создать элемент управления, производный от элемента управления Button, который отслеживает количество щелчков пользователя.
В некоторых элементах управления можно также добавить пользовательский внешний вид в графический пользовательский интерфейс элемента управления, переопределив метод OnPaint базового класса. Для кнопки с расширенной функциональностью, которая отслеживает щелчки, можно переопределить метод OnPaint, чтобы сначала вызвать базовую реализацию OnPaint, а затем нарисовать количество щелчков в одном из углов области клиента элемента управления Button.
Рекомендация
Наследуется от элемента управления Windows Forms, если:
Большая часть необходимых функций уже идентична существующему элементу управления Windows Forms.
Вам не нужен графический интерфейс, либо вы хотите создать новый графический интерфейс для существующего элемента управления.
Пользовательские элементы управления
Другой способ создать элемент управления — это практически с нуля посредством наследования от Control. Класс Control предоставляет все основные функциональные возможности, необходимые для элементов управления, включая события обработки мыши и клавиатуры, но не функциональные возможности для определенных элементов управления или графический интерфейс.
Создание элемента управления путем наследования от класса Control требует гораздо больше мысли и усилий, чем наследование от UserControl или существующего элемента управления Windows Forms. Так как значительная часть реализации остается за вами, ваш элемент управления может обладать большей гибкостью, чем составной или расширенный элемент управления, и вы можете адаптировать его точно в соответствии с вашими потребностями.
Чтобы реализовать пользовательский элемент управления, необходимо написать код для события OnPaint элемента управления, а также любой нужный код для конкретной функции. Вы также можете переопределить метод WndProc и обрабатывать сообщения windows напрямую. Это самый эффективный способ создания элемента управления, но для эффективного использования этого метода необходимо ознакомиться с API Microsoft Win32®.
Пример пользовательского элемента управления — это элемент управления часами, дублирующий внешний вид и поведение аналоговых часов. Пользовательская отрисовка вызывается для того, чтобы стрелки часов двигались в ответ на события Tick от внутреннего компонента Timer. См. раздел "Как создать простой элемент управления Windows Forms"для получения дополнительной информации.
рекомендация
Наследуется от класса Control, если:
Вы хотите предоставить пользовательское графическое представление элемента управления.
Необходимо реализовать пользовательские функции, недоступные через стандартные элементы управления.
Контролы ActiveX
Хотя инфраструктура Windows Forms оптимизирована для размещения элементов управления Windows Forms, вы по-прежнему можете использовать элементы ActiveX. Эта задача поддерживается в Visual Studio. Для получения дополнительной информации смотрите в разделе Как: добавление элементов ActiveX в Windows Forms.
Элементы управления без окон
Технологии Microsoft Visual Basic® 6.0and ActiveX поддерживают элементов управления без окон. Элементы управления без окон не поддерживаются в Windows Forms.
Индивидуальный опыт проектирования
Если вам нужно реализовать пользовательский интерфейс разработки, вы можете создать собственный конструктор. Для составных элементов управления создайте собственный класс дизайнера, наследуя его от классов ParentControlDesigner или DocumentDesigner. Для создания расширенных и пользовательских элементов управления создайте класс пользовательского конструктора, наследующийся от класса ControlDesigner.
Используйте DesignerAttribute для связи вашего элемента управления с вашим дизайнером. Для получения дополнительной информации см. статьи Расширение Design-Time поддержки и Как: Создать элемент управления Windows Forms, использующий возможности функций Design-Time.
См. также
- Разработка пользовательских элементов управления Windows Forms с помощью «.NET Framework»
- Практическое руководство. Разработка простого элемента управления Windows Forms
- Разработка составного элемента управления Windows Forms
- расширение поддержки Design-Time
- Практическое руководство. Создание элемента управления Windows Forms, использующее преимущества функций Design-Time
.NET Desktop feedback