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


Обзор создания новых элементов управления

С помощью Windows Forms можно создавать новые элементы управления или изменять существующие элементы управления с помощью наследования. В этой статье рассматриваются различия между способами создания новых элементов управления и содержатся сведения о том, как выбрать определенный тип элемента управления для проекта.

Базовый класс управления

Класс Control является базовым классом для элементов управления Windows Forms. Она предоставляет инфраструктуру, необходимую для визуального отображения в приложениях Windows Forms, и предоставляет следующие возможности:

  • Экспонирует дескриптор окна.
  • Управляет маршрутизацией сообщений.
  • Предоставляет события мыши и клавиатуры и много других событий пользовательского интерфейса.
  • Предоставляет расширенные функции компоновки.
  • Содержит множество свойств, относящихся к визуальному отображению, например ForeColor, BackColor, Heightи Width.

Так как большая часть инфраструктуры предоставляется базовым классом, это относительно легко разрабатывать собственные элементы управления Windows Forms.

Создайте свой собственный элемент управления

Существует три типа настраиваемых элементов управления, которые можно создать: пользовательские элементы управления, расширенные элементы управления и пользовательские элементы управления. В следующей таблице показано, какой тип элемента управления следует создать:

Если... Создайте ...
  • Вы хотите объединить функциональные возможности нескольких элементов управления Windows Forms в одну единицу повторного использования.
Создайте пользовательский элемент управления путем наследования от System.Windows.Forms.UserControl.
  • Большая часть необходимых функций уже идентична существующему элементу управления Windows Forms.
  • Вам не нужен пользовательский графический интерфейс, или вы хотите разработать новый графический интерфейс для существующего элемента управления.
Расширьте элемент управления путем наследования от определенного элемента управления Windows Forms.
  • Вы хотите предоставить пользовательское графическое представление элемента управления.
  • Необходимо реализовать пользовательские функции, недоступные с помощью стандартных элементов управления.
Создайте пользовательский элемент управления , наследуя от System.Windows.Forms.Control.

Пользовательские элементы управления

Пользовательский элемент управления — это коллекция элементов управления Windows Forms, представленных как единый элемент управления потребителю. Этот вид элемента управления называется составным элементом управления . Элементы управления, которые содержатся здесь, называются составными элементами управления .

Пользовательский элемент управления содержит все встроенные функции, связанные с каждым из содержащихся элементов управления Windows Forms, и позволяет выборочно предоставлять и привязывать их свойства. Кроме того, пользовательский элемент управления предоставляет большую часть функций обработки клавиатуры по умолчанию без дополнительных усилий по разработке.

Например, пользовательский элемент управления можно создать для отображения данных адреса клиента из базы данных. Этот элемент управления включает элемент управления DataGridView для отображения полей базы данных, BindingSource для обработки привязки к источнику данных и элемента управления BindingNavigator для перемещения по записям. Вы можете выборочно предоставлять свойства привязки данных, а также упаковать и повторно использовать весь элемент управления из приложения в приложение. Пример такого пользовательского элемента управления см. в статье "Практическое руководство. Применение атрибутов в элементах управления Windows Forms".

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

Расширенные элементы управления

Вы можете создать наследуемый элемент управления на основе любого существующего элемента управления Windows Forms. С помощью этого подхода можно сохранить все встроенные функции элемента управления Windows Forms, а затем расширить эту функцию, добавив настраиваемые свойства, методы или другие функции. С помощью этого параметра можно переопределить логику рисования базового элемента управления, а затем расширить пользовательский интерфейс, изменив его внешний вид.

Например, можно создать элемент управления, производный от элемента управления Button, который отслеживает количество щелчков пользователя.

В некоторых элементах управления можно также добавить пользовательский внешний вид в графический пользовательский интерфейс элемента управления, переопределив метод OnPaint базового класса. Для расширенной кнопки, отслеживающей щелчки, вы можете переопределить метод OnPaint для вызова основной реализации OnPaint, а затем нарисовать счетчик щелчков в одном из углов клиентской области элемента управления Button.

Пример расширения элемента управления см. в разделе "Расширение существующего элемента управления".

Пользовательские элементы управления

Другой способ создать элемент управления — создать его с нуля, наследуя от Control. Класс Control предоставляет все основные функциональные возможности, необходимые для элементов управления, включая события обработки мыши и клавиатуры, но не функциональные возможности для определенных элементов управления или графический интерфейс.

Создание элемента управления путем наследования от класса Control требует больше мысли и усилий, чем наследование от UserControl или существующего элемента управления Windows Forms. Поскольку вам оставлена значительная часть реализации, ваш компонент управления может отличаться большей гибкостью, чем составной или расширенный компонент управления, и вы можете адаптировать его под свои конкретные нужды.

Чтобы реализовать пользовательский элемент управления, необходимо написать код в методе OnPaint элемента управления, который управляет визуальным представлением элемента управления. Для элемента управления также необходимо написать любые поведения, зависящие от конкретных функций. Вы также можете переопределить метод WndProc и обрабатывать сообщения windows напрямую. Это самый эффективный способ создания элемента управления, но для эффективного использования этого метода необходимо ознакомиться с API Microsoft Win32.

Пример пользовательского элемента управления — это элемент управления часами, дублирующий внешний вид и поведение аналоговых часов. Пользовательская отрисовка вызывается для того, чтобы стрелки часов двигались в ответ на события Tick от внутреннего компонента Timer.

Дополнительные сведения см. в статье "Создание простого пользовательского элемента управления".

Элементы ActiveX

Хотя инфраструктура Windows Forms оптимизирована для размещения элементов управления Windows Forms, вы по-прежнему можете использовать элементы ActiveX. Эта задача поддерживается в Visual Studio. Для получения дополнительной информации смотрите в разделе Как: добавление элементов ActiveX в Windows Forms.

Предупреждение

Элементы ActiveX не полностью поддерживаются на платформе .NET. Полная поддержка элементов ActiveX сохраняется в рамках .NET Framework.

Индивидуальный опыт проектирования

Если вам нужно реализовать пользовательские возможности на этапе проектирования, вы можете создать собственный инструмент проектирования. Для составных элементов управления создайте собственный класс дизайнера, наследуя его от классов ParentControlDesigner или DocumentDesigner. Для создания расширенных и пользовательских элементов управления создайте класс пользовательского конструктора, наследующийся от класса ControlDesigner.

Используйте DesignerAttribute для связывания вашего элемента управления с вашим дизайнером.

Следующие сведения устарели, но это может помочь вам.