Windows forms control interface

Создание собственных элементов управления Varieties of Custom Controls

Платформа .NET Framework предоставляет возможности разработки и реализации новых элементов управления. With the .NET Framework, you can develop and implement new controls. С ее помощью можно расширить функциональные возможности привычных пользовательских элементов управления, а также уже существующих элементов управления через наследование. You can extend the functionality of the familiar user control as well as existing controls through inheritance. Кроме того, она позволяет писать настраиваемые элементы управления с собственной отрисовкой. You can also write custom controls that perform their own painting.

Выбор типа создаваемого элемента управления может быть затруднителен. Deciding which kind of control to create can be confusing. В этом разделе описываются различия между типами элементов управления, которые можно использовать для наследования, и рассказывается, как выбрать тип элемента управления для конкретного проекта. This topic highlights the differences among the various kinds of controls from which you can inherit, and provides you with information about how to choose a particular kind of control for your project.

Дополнительные сведения о создании элемента управления для использования в Web Forms см. в разделе Разработка пользовательских серверных элементов управления ASP.NET. For information about authoring a control to use on Web Forms, see Developing Custom ASP.NET Server Controls.

Базовый класс элемента управления Base Control Class

ControlКласс является базовым классом для элементов управления Windows Forms. The Control class is the base class for Windows Forms controls. Он обеспечивает инфраструктуру, необходимую для визуального отображения элементов управления в приложениях Windows Forms. It provides the infrastructure required for visual display in Windows Forms applications.

ControlКласс выполняет следующие задачи для предоставления визуального отображения в Windows Forms приложениях: The Control class performs the following tasks to provide visual display in Windows Forms applications:

Обеспечивает обработку окон. Exposes a window handle.

Управляет маршрутизацией сообщений. Manages message routing.

Предоставляет события мыши и клавиатуры, а также многие другие события пользовательского интерфейса. Provides mouse and keyboard events, and many other user interface events.

Предоставляет расширенные функции размещения. Provides advanced layout features.

Содержит множество свойств, характерных для визуального отображения, таких как ForeColor ,, BackColor Height и Width . Contains many properties specific to visual display, such as ForeColor, BackColor, Height, and Width.

Обеспечивает безопасность и поддержку потоков, необходимые для того, чтобы элемент управления Windows Forms действовал как элемент управления Microsoft® ActiveX®. Provides the security and threading support necessary for a Windows Forms control to act as a Microsoft® ActiveX® control.

Поскольку существенная часть инфраструктуры предоставляется базовым классом, разрабатывать собственные элементы управления Windows Forms довольно просто. Because so much of the infrastructure is provided by the base class, it is relatively easy to develop your own Windows Forms controls.

Типы элементов управления Kinds of Controls

Windows Forms поддерживает три типа элементов управления, определяемых пользователем: составные, расширенные и настраиваемые. Windows Forms supports three kinds of user-defined controls: composite, extended, and custom. В следующих разделах описывается каждый тип элемента управления и приводятся рекомендации по выбору типа для использования в проектах. The following sections describe each kind of control and give recommendations for choosing the kind to use in your projects.

Читайте также:  Как запросить сертификат windows

Составные элементы управления Composite Controls

Составной элемент управления — это коллекция элементов управления Windows Forms, инкапсулированных в общий контейнер. A composite control is a collection of Windows Forms controls encapsulated in a common container. Этот тип элементов управления иногда называют пользовательским элементом управления. This kind of control is sometimes called a user control. Элементы, входящие в составной элемент управления, называются составляющими. The contained controls are called constituent controls.

Составной элементе управления содержит все унаследованные функциональные возможности, связанные с каждым входящим в него элементом управления Windows Forms, и позволяет выборочно представлять и связывать их свойства. A composite control holds all of the inherent functionality associated with each of the contained Windows Forms controls and enables you to selectively expose and bind their properties. Кроме того, составной элемент управления предоставляет немало функций для обработки событий клавиатуры по умолчанию, не требуя дополнительной разработки с вашей стороны. A composite control also provides a great deal of default keyboard handling functionality with no extra development effort on your part.

Например, составной элемент управления можно собрать таким образом, чтобы он отображал данные адреса клиента из базы данных. For example, a composite control could be built to display customer address data from a database. Этот элемент управления может включать DataGridView элемент управления для вывода полей базы данных, BindingSource для управления привязкой к источнику данных и BindingNavigator для перемещения по записям. This control could include a DataGridView control to display the database fields, a BindingSource to handle binding to a data source, and a BindingNavigator control to move through the records. Вы можете выборочно предоставить свойства привязки данных, а также упаковать и повторно использовать весь элемент управления в других приложениях. You could selectively expose data binding properties, and you could package and reuse the entire control from application to application. Пример составного элемента управления такого вида см. в разделе Практическое руководство. Применение атрибутов в элементах управления Windows Forms. For an example of this kind of composite control, see How to: Apply Attributes in Windows Forms Controls.

Чтобы создать составной элемент управления, необходимо создать класс, производный от UserControl класса. To author a composite control, derive from the UserControl class. UserControlБазовый класс обеспечивает маршрутизацию клавиатуры для дочерних элементов управления и позволяет дочерним элементам управления работать как с группой. The UserControl base class provides keyboard routing for child controls and enables child controls to work as a group. Дополнительные сведения см. в разделе Разработка составного элемента Windows Forms. For more information, see Developing a Composite Windows Forms Control.

Рекомендация Recommendation

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

  • — если нужно объединить функциональные возможности нескольких элементов управления Windows Forms в один блок для повторного использования. You want to combine the functionality of several Windows Forms controls into a single reusable unit.

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

Элемент управления можно унаследовать от любого существующего элемента управления Windows Forms. You can derive an inherited control from any existing Windows Forms control. Такой подход позволяет сохранить все функциональные возможности, унаследованные от элемента управления Windows Forms, и расширить их путем добавления пользовательских свойств, методов или других функций. With this approach, you can retain all of the inherent functionality of a Windows Forms control, and then extend that functionality by adding custom properties, methods, or other features. С помощью этого параметра можно переопределить логику отрисовки базового элемента управления, а затем расширить его пользовательский интерфейс, изменив его внешний вид. With this option, you can override the base control’s paint logic, and then extend its user interface by changing its appearance.

Читайте также:  Вид проводника по умолчанию windows 10

Например, можно создать элемент управления, производный от Button элемента управления, который отслеживает, сколько раз пользователь щелкнул его. For example, you can create a control derived from the Button control that tracks how many times a user has clicked it.

В некоторых элементах управления можно также добавить пользовательский внешний вид к графическому пользовательскому интерфейсу элемента управления, переопределив OnPaint метод базового класса. In some controls, you can also add a custom appearance to the graphical user interface of your control by overriding the OnPaint method of the base class. Для расширенной кнопки, отслеживающей нажатия клавиш, можно переопределить OnPaint метод для вызова базовой реализации OnPaint , а затем нарисовать число щелчков в одном углу Button клиентской области элемента управления. For an extended button that tracks clicks, you can override the OnPaint method to call the base implementation of OnPaint, and then draw the click count in one corner of the Button control’s client area.

Рекомендация Recommendation

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

— если большинство необходимых функций аналогичны функциям уже существующего элемента управления Windows Forms; Most of the functionality you need is already identical to an existing Windows Forms control.

— если нестандартный графический интерфейс не требуется или необходимо разработать новый интерфейс для существующего элемента управления. You do not need a custom graphical user interface, or you want to design a new graphical user interface for an existing control.

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

Другим способом создания элемента управления является его создание с самого начала путем наследования от Control . Another way to create a control is to create one substantially from the beginning by inheriting from Control. ControlКласс предоставляет все основные функциональные возможности, необходимые элементам управления, включая события обработки мыши и клавиатуры, но не связанные с контролем функции или графический интерфейс. The Control class provides all of the basic functionality required by controls, including mouse and keyboard handling events, but no control-specific functionality or graphical interface.

Создание элемента управления путем наследования от Control класса требует гораздо больше усилий, чем наследование от UserControl или существующего элемента управления Windows Forms. Creating a control by inheriting from the Control class requires much more thought and effort than inheriting from UserControl or an existing Windows Forms control. Поскольку значительную часть реализации вы выполняете сами, ваш элемент управления может быть более гибким, чем составной или расширенный, и вы можете его адаптировать к конкретным задачам. Because a great deal of implementation is left for you, your control can have greater flexibility than a composite or extended control, and you can tailor your control to suit your exact needs.

Читайте также:  Сменить владельца рекурсивно линукс

Для реализации пользовательского элемента управления необходимо написать код для OnPaint события элемента управления, а также любой необходимый для конкретного компонента код. To implement a custom control, you must write code for the OnPaint event of the control, as well as any feature-specific code you need. Кроме того, можно переопределить WndProc метод и напрямую управлять сообщениями Windows. You can also override the WndProc method and handle windows messages directly. Это самый эффективный способ создания элементов управления, однако для того, чтобы использовать его эффективно, необходимо знание API Microsoft Win32®. This is the most powerful way to create a control, but to use this technique effectively, you need to be familiar with the Microsoft Win32® API.

Примером нестандартного элемента управления служит элемент управления «Часы», который выглядит и действует как часы со стрелками. An example of a custom control is a clock control that duplicates the appearance and behavior of an analog clock. Пользовательское рисование вызывается для того, чтобы стрелки часов переводились в ответ на Tick события из внутреннего Timer компонента. Custom painting is invoked to cause the hands of the clock to move in response to Tick events from an internal Timer component. Дополнительные сведения см. в разделе Практическое руководство. Разработка простого элемента управления форм Windows Forms. For more information, see How to: Develop a Simple Windows Forms Control.

Рекомендация Recommendation

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

— если требуется создать пользовательское графическое представление элемента управления; You want to provide a custom graphical representation of your control.

— если требуется реализовать пользовательские функциональные возможности, которые недоступны в стандартных элементах управления. You need to implement custom functionality that is not available through standard controls.

Элементы управления ActiveX ActiveX Controls

Несмотря на то что инфраструктура Windows Forms оптимизирована для размещения элементов управления Windows Forms, элементы управления ActiveX также можно использовать. Although the Windows Forms infrastructure has been optimized to host Windows Forms controls, you can still use ActiveX controls. Эта задача поддерживается в Visual Studio. There is support for this task in Visual Studio. Дополнительные сведения см. в разделе Практическое руководство. Добавление элементов управления ActiveX в формы Windows Forms. For more information, see How to: Add ActiveX Controls to Windows Forms.

Элементы управления без окон Windowless Controls

Технологии Microsoft Visual Basic® 6.0 и ActiveX поддерживают элементы управления без окон. The Microsoft Visual Basic® 6.0and ActiveX technologies support windowless controls. В Windows Forms элементы управления без окон не поддерживаются. Windowless controls are not supported in Windows Forms.

Пользовательская среда разработки Custom Design Experience

Если вам требуется пользовательская среда разработки, вы можете создать свой собственный конструктор. If you need to implement a custom design-time experience, you can author your own designer. Для составных элементов управления необходимо создать класс пользовательского конструктора из ParentControlDesigner DocumentDesigner классов или. For composite controls, derive your custom designer class from the ParentControlDesigner or the DocumentDesigner classes. Для расширенных и настраиваемых элементов управления создайте класс пользовательского конструктора из ControlDesigner класса. For extended and custom controls, derive your custom designer class from the ControlDesigner class.

Оцените статью