Создание собственных элементов управления
Платформа .NET Framework предоставляет возможности разработки и реализации новых элементов управления. С ее помощью можно расширить функциональные возможности привычных пользовательских элементов управления, а также уже существующих элементов управления через наследование. Кроме того, она позволяет писать настраиваемые элементы управления с собственной отрисовкой.
Выбор типа создаваемого элемента управления может быть затруднителен. В этом разделе описываются различия между типами элементов управления, которые можно использовать для наследования, и рассказывается, как выбрать тип элемента управления для конкретного проекта.
Note
Дополнительные сведения о создании элемента управления для использования в Web Forms см. в разделе Разработка пользовательских серверных элементов управления 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 простой.
Рекомендация
Наследование класса Control имеет смысл в следующих случаях:
— если требуется создать пользовательское графическое представление элемента управления;
— если требуется реализовать пользовательские функциональные возможности, которые недоступны в стандартных элементах управления.
Элементы управления ActiveX
Несмотря на то что инфраструктура Windows Forms оптимизирована для размещения элементов управления Windows Forms, элементы управления ActiveX также можно использовать. Эта задача поддерживается в Visual Studio. Дополнительные сведения см. в разделе Как Добавление элементов управления ActiveX в формы Windows Forms.
Элементы управления без окон
Технологии Microsoft Visual Basic® 6.0 и ActiveX поддерживают элементы управления без окон. В Windows Forms элементы управления без окон не поддерживаются.
Пользовательская среда разработки
Если вам требуется пользовательская среда разработки, вы можете создать свой собственный конструктор. Для составных элементов управления, создайте производный пользовательский класс конструктора из ParentControlDesigner или DocumentDesigner классы. Для расширенных и настраиваемых элементов управления, создайте производный пользовательский класс конструктора из ControlDesigner класса.
Используйте DesignerAttribute должен быть сопоставлен конструктора элемента управления. Дополнительные сведения см. в разделе расширение поддержки времени разработки и как: Создание элемента управления Windows Forms, используются преимущества функций разработки.
См. также
- Разработка пользовательских элементов управления Windows Forms в .NET Framework
- Практическое руководство. Разработка простого элемента управления форм Windows Forms
- Разработка составного элемента Windows Forms
- Расширение поддержки времени разработки
- Практическое руководство. Создание элемента управления Windows Forms, используются преимущества функций времени разработки