Рекомендации относительно типов элементов управления

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

Примечание.

Если необходимо создать пользовательский элемент управления для использования в Web Forms, см. раздел Разработка пользовательских серверных элементов управления ASP.NET.

Наследование элементов управления Windows Forms

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

Наследование элементов управления Windows Forms имеет смысл в следующих случаях:

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

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

Наследование класса UserControl

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

Наследование класса UserControl имеет смысл в следующих случаях:

  • — если нужно объединить функциональные возможности нескольких элементов управления Windows Forms в один блок для повторного использования.

Наследование класса Control

Другим способом разработки элемента управления является создание его практически с нуля путем наследования от класса Control. Класс Control обеспечивает всю основную функциональность, необходимую элементам управления (например, события), однако он не имеет функциональных возможностей для отдельных элементов управления и лишен графического интерфейса. Создание элемента управления путем наследования от класса Control — гораздо более сложная задача, чем наследование от пользовательского элемента управления или существующего элемента управления Windows Forms. Разработчик должен написать код для события OnPaint элемента управления, а также весь код, необходимый для реализации функциональных возможностей. Однако в этом случае доступны более гибкие возможности, которые позволяют настроить элемент управления в точном соответствии с требованиями. Примером нестандартного элемента управления служит элемент "Часы", который выглядит и действует аналогично часам со стрелками. Вы можете применить пользовательское оформление, чтобы заставить стрелки часов двигаться при наступлении событий Tick внутреннего компонента таймера.

Наследование класса Control имеет смысл в следующих случаях:

  • — если требуется создать пользовательское графическое представление элемента управления;

  • — если требуется реализовать пользовательские функциональные возможности, которые недоступны в стандартных элементах управления.

См. также