ControlDesigner Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Расширяет поведение элемента управления Control в режиме разработки.
public ref class ControlDesigner : System::ComponentModel::Design::ComponentDesigner
public class ControlDesigner : System.ComponentModel.Design.ComponentDesigner
type ControlDesigner = class
inherit ComponentDesigner
Public Class ControlDesigner
Inherits ComponentDesigner
- Наследование
- Производный
Примеры
В следующем примере ControlDesigner реализации демонстрируется обработка MouseEnter
и MouseLeave
события, рисование элемента управления из кода конструктора IDesignerFilter и использование части интерфейса для добавления свойства элемента управления во время разработки. Следующий пример кода содержит конструктор и пример пользовательского элемента управления, связанного с конструктором. Чтобы создать этот пример, скомпилируйте пример в библиотеку классов, добавьте ссылку на библиотеку в проект Windows Forms, добавьте элемент управления на панель элементов и добавьте экземпляр элемента управления в форму. При наведении указателя на элемент управления выделяется внутренний контур периметра элемента управления, а цвет, используемый для рисования контура, соответствует свойству OutlineColor
, добавленного конструктором к свойствам, перечисленным для элемента управления.
Добавьте ссылку на сборку System.Design для компиляции примера кода.
using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Collections;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
using namespace System::Security::Permissions;
public ref class TestControlDesigner: public System::Windows::Forms::Design::ControlDesigner
{
private:
bool mouseover;
Color lineColor;
public:
property Color OutlineColor
{
Color get()
{
return lineColor;
}
void set( Color value )
{
lineColor = value;
}
}
TestControlDesigner()
{
mouseover = false;
lineColor = Color::White;
}
protected:
virtual void OnMouseEnter() override
{
this->mouseover = true;
this->Control->Refresh();
}
virtual void OnMouseLeave() override
{
this->mouseover = false;
this->Control->Refresh();
}
virtual void OnPaintAdornments( System::Windows::Forms::PaintEventArgs^ pe ) override
{
if ( this->mouseover )
pe->Graphics->DrawRectangle( gcnew Pen( gcnew SolidBrush( this->lineColor ),6 ), 0, 0, this->Control->Size.Width, this->Control->Size.Height );
}
protected:
[ReflectionPermission(SecurityAction::Demand, Flags=ReflectionPermissionFlag::MemberAccess)]
virtual void PreFilterProperties( System::Collections::IDictionary^ properties ) override
{
properties->Add( "OutlineColor", TypeDescriptor::CreateProperty( TestControlDesigner::typeid, "OutlineColor", System::Drawing::Color::typeid, nullptr ) );
}
};
[DesignerAttribute(TestControlDesigner::typeid)]
public ref class TestControl: public System::Windows::Forms::UserControl
{
private:
System::ComponentModel::Container^ components;
public:
TestControl()
{
components = gcnew System::ComponentModel::Container;
}
protected:
~TestControl()
{
if ( components != nullptr )
{
delete components;
}
}
};
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace ControlDesignerExample
{
// ExampleControlDesigner is an example control designer that
// demonstrates basic functions of a ControlDesigner.
public class ExampleControlDesigner : System.Windows.Forms.Design.ControlDesigner
{
// This Boolean state reflects whether the mouse is over the control.
private bool mouseover = false;
// This color is a private field for the OutlineColor property.
private Color lineColor = Color.White;
// This color is used to outline the control when the mouse is
// over the control.
public Color OutlineColor
{
get
{
return lineColor;
}
set
{
lineColor = value;
}
}
public ExampleControlDesigner()
{
}
// Sets a value and refreshes the control's display when the
// mouse position enters the area of the control.
protected override void OnMouseEnter()
{
this.mouseover = true;
this.Control.Refresh();
}
// Sets a value and refreshes the control's display when the
// mouse position enters the area of the control.
protected override void OnMouseLeave()
{
this.mouseover = false;
this.Control.Refresh();
}
// Draws an outline around the control when the mouse is
// over the control.
protected override void OnPaintAdornments(System.Windows.Forms.PaintEventArgs pe)
{
if (this.mouseover)
{
pe.Graphics.DrawRectangle(
new Pen(new SolidBrush(this.lineColor), 6),
0,
0,
this.Control.Size.Width,
this.Control.Size.Height);
}
}
// Adds a property to this designer's control at design time
// that indicates the outline color to use.
// The DesignOnlyAttribute ensures that the OutlineColor
// property is not serialized by the designer.
protected override void PreFilterProperties(System.Collections.IDictionary properties)
{
PropertyDescriptor pd = TypeDescriptor.CreateProperty(
typeof(ExampleControlDesigner),
"OutlineColor",
typeof(System.Drawing.Color),
new Attribute[] { new DesignOnlyAttribute(true) });
properties.Add("OutlineColor", pd);
}
}
// This example control demonstrates the ExampleControlDesigner.
[DesignerAttribute(typeof(ExampleControlDesigner))]
public class ExampleControl : System.Windows.Forms.UserControl
{
private System.ComponentModel.Container components = null;
public ExampleControl()
{
components = new System.ComponentModel.Container();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.Dispose();
}
base.Dispose( disposing );
}
}
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Collections
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Namespace ControlDesignerExample
_
' ExampleControlDesigner is an example control designer that
' demonstrates basic functions of a ControlDesigner.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class ExampleControlDesigner
Inherits System.Windows.Forms.Design.ControlDesigner
' This boolean state reflects whether the mouse is over the control.
Private mouseover As Boolean = False
' This color is a private field for the OutlineColor property.
Private lineColor As Color = Color.White
' This color is used to outline the control when the mouse is
' over the control.
Public Property OutlineColor() As Color
Get
Return lineColor
End Get
Set(ByVal Value As Color)
lineColor = Value
End Set
End Property
Public Sub New()
End Sub
' Sets a value and refreshes the control's display when the
' mouse position enters the area of the control.
Protected Overrides Sub OnMouseEnter()
Me.mouseover = True
Me.Control.Refresh()
End Sub
' Sets a value and refreshes the control's display when the
' mouse position enters the area of the control.
Protected Overrides Sub OnMouseLeave()
Me.mouseover = False
Me.Control.Refresh()
End Sub
' Draws an outline around the control when the mouse is
' over the control.
Protected Overrides Sub OnPaintAdornments(ByVal pe As System.Windows.Forms.PaintEventArgs)
If Me.mouseover Then
pe.Graphics.DrawRectangle(New Pen(New SolidBrush(Me.lineColor), 6), 0, 0, Me.Control.Size.Width, Me.Control.Size.Height)
End If
End Sub
' Adds a property to this designer's control at design time
' that indicates the outline color to use.
' The DesignOnlyAttribute ensures that the OutlineColor
' property is not serialized by the designer.
Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
Dim pd As PropertyDescriptor = TypeDescriptor.CreateProperty( _
GetType(ExampleControlDesigner), _
"OutlineColor", _
GetType(System.Drawing.Color), _
New Attribute() {New DesignOnlyAttribute(True)})
properties.Add("OutlineColor", pd)
End Sub
End Class
' This example control demonstrates the ExampleControlDesigner.
<DesignerAttribute(GetType(ExampleControlDesigner))> _
Public Class ExampleControl
Inherits System.Windows.Forms.UserControl
Private components As System.ComponentModel.Container = Nothing
Public Sub New()
components = New System.ComponentModel.Container()
End Sub
Protected Overloads Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If (components IsNot Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
End Class
End Namespace
Комментарии
ControlDesigner предоставляет базовый класс для конструкторов компонентов, производных от Control. Помимо методов и функций, унаследованных от ComponentDesigner класса , ControlDesigner предоставляет дополнительные методы для поддержки расширения и изменения поведения связанного Control объекта во время разработки.
Конструктор можно связать с типом с помощью DesignerAttribute. Общие сведения о настройке поведения во время разработки см. в разделе Расширение поддержки Design-Time.
Конструкторы
ControlDesigner() |
Инициализирует новый экземпляр класса ControlDesigner. |
Поля
accessibilityObj |
Задает доступный объект для конструктора. |
InvalidPoint |
Определяет локальную точку Point, представляющую значения недопустимой точки Point. |
Свойства
AccessibilityObject |
Получает объект AccessibleObject, назначенный элементу управления. |
ActionLists |
Возвращает списки действий времени разработки, поддерживаемые компонентом, сопоставленным конструктору. (Унаследовано от ComponentDesigner) |
AssociatedComponents |
Получает коллекцию компонентов, сопоставленных компоненту, который управляется конструктором. |
AutoResizeHandles |
Получает или задает значение, указывающее, зависит ли распределение дескрипторов изменения размера от значения свойства AutoSize. |
BehaviorService |
Получает BehaviorService из среды разработки. |
Component |
Возвращает основной компонент, создаваемый данным конструктором. (Унаследовано от ComponentDesigner) |
Control |
Получает элемент управления, создаваемый данным конструктором. |
EnableDragRect |
Получает значение, указывающее, могут ли быть нарисованы перетаскиваемые прямоугольники на данном компоненте конструктора. |
InheritanceAttribute |
Получает InheritanceAttribute конструктора. |
InheritanceAttribute |
Возвращает атрибут, обозначающий тип наследования связанного компонента. (Унаследовано от ComponentDesigner) |
Inherited |
Возвращает значение, определяющее, наследуется ли этот компонент или нет. (Унаследовано от ComponentDesigner) |
ParentComponent |
Получает родительский компонент для ControlDesigner. |
ParentComponent |
Возвращает родительский компонент этого конструктора. (Унаследовано от ComponentDesigner) |
ParticipatesWithSnapLines |
Получает значение, указывающее, разрешит ли ControlDesigner выравнивание по линии привязки во время операции перетаскивания. |
SelectionRules |
Получает правила выбора, указывающие на возможность перемещения компонентов. |
SetTextualDefaultProperty |
Расширяет поведение элемента управления Control в режиме разработки. (Унаследовано от ComponentDesigner) |
ShadowProperties |
Возвращает коллекцию значений свойств, переопределяющих параметры пользователя. (Унаследовано от ComponentDesigner) |
SnapLines |
Получает список объектов SnapLine, представляющих важные точки выравнивания для этого элемента управления. |
Verbs |
Возвращает команды в режиме конструктора, поддерживаемые компонентом, связанным с конструктором. (Унаследовано от ComponentDesigner) |
Методы
BaseWndProc(Message) |
Обрабатывает сообщения Windows. |
CanBeParentedTo(IDesigner) |
Указывает, может ли этот элемент управления конструктора быть порожденным элементом управления заданного конструктора. |
DefWndProc(Message) |
Предоставляет стандартную обработку сообщений Windows. |
DisplayError(Exception) |
Отображает для пользователя информацию об указанном исключении. |
Dispose() |
Освобождает все ресурсы, занятые модулем ComponentDesigner. (Унаследовано от ComponentDesigner) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом ControlDesigner, а при необходимости освобождает также управляемые ресурсы. |
DoDefaultAction() |
Создает в файле с исходным кодом подпись метода для события по умолчанию для компонента и устанавливает курсор в позицию, где была создана эта подпись. (Унаследовано от ComponentDesigner) |
EnableDesignMode(Control, String) |
Разрешает функцию разработки для дочернего элемента управления. |
EnableDragDrop(Boolean) |
Разрешает или запрещает поддержку операций перетаскивания для проектируемого элемента управления. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetControlGlyph(GlyphSelectionType) |
Возвращает ControlBodyGlyph, представляющий границы данного элемента управления. |
GetGlyphs(GlyphSelectionType) |
Получает коллекцию объектов Glyph, представляющих границы выделения и токены захвата для стандартного элемента управления. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetHitTest(Point) |
Указывает, должно ли нажатие клавиши мыши в определенной точке обрабатываться элементом управления. |
GetService(Type) |
Пытается извлечь службу заданного типа с узла режима разработки компонента конструктора. (Унаследовано от ComponentDesigner) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
HookChildControls(Control) |
Рассылает сообщения от дочерних элементов управления заданного элемента управления в конструктор. |
Initialize(IComponent) |
Инициализирует конструктор, используя заданный компонент. |
InitializeExistingComponent(IDictionary) |
Повторно инициализирует существующий компонент. |
InitializeExistingComponent(IDictionary) |
Выполняет повторную инициализацию существующего компонента. (Унаследовано от ComponentDesigner) |
InitializeNewComponent(IDictionary) |
Инициализирует только что созданный компонент. |
InitializeNewComponent(IDictionary) |
Инициализирует только что созданный компонент. (Унаследовано от ComponentDesigner) |
InitializeNonDefault() |
Инициализирует свойства элемента управления с любыми значениями, не являющимися значениями по умолчанию. |
InitializeNonDefault() |
Устаревшие..
Устаревшие..
Инициализирует параметры импортированного компонента, параметры которого уже были инициализированы с использованием параметров, отличных от заданных по умолчанию. (Унаследовано от ComponentDesigner) |
InternalControlDesigner(Int32) |
Возвращает конструктор внутреннего элемента управления с заданным индексом в ControlDesigner. |
InvokeGetInheritanceAttribute(ComponentDesigner) |
Возвращает атрибут InheritanceAttribute заданного объекта ComponentDesigner. (Унаследовано от ComponentDesigner) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
NumberOfInternalControlDesigners() |
Возвращает число конструкторов внутреннего элемента управления в ControlDesigner. |
OnContextMenu(Int32, Int32) |
Показывает контекстное меню и предоставляет возможность осуществить дополнительную обработку, когда контекстное меню отображается. |
OnCreateHandle() |
Предоставляет возможность осуществления дополнительной обработки немедленно после создания дескриптора элемента управления. |
OnDragComplete(DragEventArgs) |
Получает вызов для очистки операции перетаскивания. |
OnDragDrop(DragEventArgs) |
Получает вызов, когда перетаскиваемый объект перемещается на представление конструктора элемента управления. |
OnDragEnter(DragEventArgs) |
Получает вызов, когда операция перетаскивания входит на представление конструктора элемента управления. |
OnDragLeave(EventArgs) |
Получает вызов, когда операция перетаскивания выходит за пределы представления конструктора элемента управления. |
OnDragOver(DragEventArgs) |
Получает вызов, когда перетаскиваемый объект перемещается по представлению конструктора элемента управления. |
OnGiveFeedback(GiveFeedbackEventArgs) |
Получает вызов во время выполнения операции перетаскивания для обеспечения визуального слежения за положением мыши при операции перетаскивания. |
OnMouseDragBegin(Int32, Int32) |
Получает вызов в ответ на нажатие и удерживание левой кнопки мыши над компонентом. |
OnMouseDragEnd(Boolean) |
Вызывается в конце операции перетаскивания для завершения или отмены операции. |
OnMouseDragMove(Int32, Int32) |
Получает вызов для каждого движения мыши во время операции перетаскивания. |
OnMouseEnter() |
Получает вызов, когда указатель мыши в первый раз оказывается на элементе управления. |
OnMouseHover() |
Получает вызов после наведения указателя мыши на элемент управления. |
OnMouseLeave() |
Получает вызов, когда указатель мыши в первый раз оказывается на элементе управления. |
OnPaintAdornments(PaintEventArgs) |
Получает вызов, когда элемент управления, управляемый конструктором, украсил свою поверхность, так что конструктор имеет возможность дополнительного украшения верхней части элемента управления. |
OnSetComponentDefaults() |
Устаревшие..
Устаревшие..
Вызывается при инициализации конструктора. |
OnSetCursor() |
Получает вызов каждый раз, когда необходимо установить курсор. |
PostFilterAttributes(IDictionary) |
Позволяет конструктору изменять или удалять элементы из набора атрибутов, предоставленных через класс TypeDescriptor. (Унаследовано от ComponentDesigner) |
PostFilterEvents(IDictionary) |
Позволяет конструктору изменять или удалять элементы из набора событий, предоставленных через класс TypeDescriptor. (Унаследовано от ComponentDesigner) |
PostFilterProperties(IDictionary) |
Позволяет конструктору изменять или удалять элементы из набора свойств, предоставленных с использованием класса TypeDescriptor. (Унаследовано от ComponentDesigner) |
PreFilterAttributes(IDictionary) |
Позволяет конструктору добавлять элементы к набору атрибутов, предоставленному с использованием класса TypeDescriptor. (Унаследовано от ComponentDesigner) |
PreFilterEvents(IDictionary) |
Позволяет конструктору добавлять элементы к набору событий, предоставленных с использованием класса TypeDescriptor. (Унаследовано от ComponentDesigner) |
PreFilterProperties(IDictionary) |
Настраивает набор свойств, предоставляемых компонентом через TypeDescriptor. |
RaiseComponentChanged(MemberDescriptor, Object, Object) |
Уведомляет службу IComponentChangeService о том, что данный компонент был изменен. (Унаследовано от ComponentDesigner) |
RaiseComponentChanging(MemberDescriptor) |
Уведомляет службу IComponentChangeService о том, что компонент будет изменен. (Унаследовано от ComponentDesigner) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
UnhookChildControls(Control) |
Рассылает сообщения для дочерних элементов заданного элемента управления к каждому элементу управления, а не к родительскому конструктору. |
WndProc(Message) |
Обрабатывает сообщения Windows и дополнительно пересылает их в элемент управления. |