Пользовательские элементы управления (Windows Forms .NET)
С помощью Windows Forms можно создавать новые элементы управления или изменять существующие элементы управления с помощью наследования. В этой статье рассматриваются различия между способами создания новых элементов управления и содержатся сведения о том, как выбрать определенный тип элемента управления для проекта.
Базовый класс управления
Класс Control является базовым классом для элементов управления Windows Forms. Она предоставляет инфраструктуру, необходимую для визуального отображения в приложениях Windows Forms, и предоставляет следующие возможности:
- Экспонирует дескриптор окна.
- Управляет маршрутизацией сообщений.
- Предоставляет события мыши и клавиатуры и много других событий пользовательского интерфейса.
- Предоставляет расширенные функции компоновки.
- Содержит множество свойств, относящихся к визуальному отображению, например ForeColor, BackColor, Heightи Width.
Так как большая часть инфраструктуры предоставляется базовым классом, это относительно легко разрабатывать собственные элементы управления Windows Forms.
Создайте свой собственный элемент управления
Существует три типа настраиваемых элементов управления, которые можно создать: пользовательские элементы управления, расширенные элементы управления и пользовательские элементы управления. В следующей таблице показано, какой тип элемента управления следует создать:
Если... | Создайте ... |
---|---|
|
Создайте пользовательский элемент управления путем наследования от System.Windows.Forms.UserControl. |
|
Расширьте элемент управления путем наследования от определенного элемента управления Windows Forms. |
|
Создайте пользовательский элемент управления , наследуя от System.Windows.Forms.Control. |
Пользовательские элементы управления
Пользовательский элемент управления — это коллекция элементов управления Windows Forms, представленных как единый элемент управления потребителю. Этот вид элемента управления называется составным элементом управления . Содержащиеся элементы управления называются составными элементами управления.
Пользовательский элемент управления содержит все встроенные функции, связанные с каждым из содержащихся элементов управления Windows Forms, и позволяет выборочно предоставлять и привязывать их свойства. Кроме того, пользовательский элемент управления предоставляет большую часть функций обработки клавиатуры по умолчанию без дополнительных усилий по разработке.
Например, пользовательский элемент управления можно создать для отображения данных адреса клиента из базы данных. Этот элемент управления включает элемент управления DataGridView для отображения полей базы данных, BindingSource для обработки привязки к источнику данных и элемента управления BindingNavigator для перемещения по записям. Вы можете выборочно предоставлять свойства привязки данных, а также упаковать и повторно использовать весь элемент управления из приложения в приложение.
Дополнительные сведения см. в обзоре пользовательского управления.
Расширенные элементы управления
Наследуемый элемент управления можно получить от любого существующего элемента управления Windows Forms. С помощью этого подхода можно сохранить все встроенные функции элемента управления Windows Forms, а затем расширить эту функцию, добавив настраиваемые свойства, методы или другие функции. С помощью этого параметра можно переопределить логику рисования базового элемента управления, а затем расширить пользовательский интерфейс, изменив его внешний вид.
Например, можно создать элемент управления, производный от элемента управления Button, который отслеживает количество щелчков пользователя.
В некоторых элементах управления можно также добавить пользовательский внешний вид в графический пользовательский интерфейс элемента управления, переопределив метод OnPaint базового класса. Для расширенной кнопки, отслеживающей щелчки, вы можете переопределить метод OnPaint для вызова основной реализации OnPaint, а затем нарисовать счетчик щелчков в одном из углов клиентской области элемента управления Button.
Пользовательские элементы управления
Другой способ создать элемент управления — создать его с нуля, наследуя от Control. Класс Control предоставляет все основные функциональные возможности, необходимые для элементов управления, включая события обработки мыши и клавиатуры, но не функциональные возможности для определенных элементов управления или графический интерфейс.
Создание элемента управления путем наследования от класса Control требует больше мысли и усилий, чем наследование от UserControl или существующего элемента управления Windows Forms. Поскольку вам оставлена значительная часть реализации, ваш компонент управления может отличаться большей гибкостью, чем составной или расширенный компонент управления, и вы можете адаптировать его под свои конкретные нужды.
Чтобы реализовать пользовательский элемент управления, необходимо написать код для события OnPaint элемента управления, который управляет визуальным отображением элемента управления. Для элемента управления также необходимо написать любые поведения, зависящие от конкретных функций. Вы также можете переопределить метод WndProc и обрабатывать сообщения windows напрямую. Это самый эффективный способ создания элемента управления, но для эффективного использования этого метода необходимо ознакомиться с API Microsoft Win32®.
Пример пользовательского элемента управления — это элемент управления часами, дублирующий внешний вид и поведение аналоговых часов. Настраиваемая отрисовка выполняется, чтобы стрелки часов двигались в ответ на события Tick из внутреннего компонента Timer.
Индивидуальный опыт проектирования
Если вам нужно реализовать пользовательские возможности на этапе проектирования, вы можете создать собственный инструмент проектирования. Для составных элементов управления создайте пользовательский класс проектировщика, наследующий от классов ParentControlDesigner или DocumentDesigner. Для расширенных и пользовательских элементов управления создайте свой пользовательский дизайнерский класс, наследуя его от класса ControlDesigner.
Используйте DesignerAttribute для связывания вашего элемента управления с вашим дизайнером.
Следующие сведения устарели, но могут помочь вам.
.NET Desktop feedback