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
Конструкторы
| Имя | Описание |
|---|---|
| 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. |
| 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) |
Повторно инициализирует существующий компонент. |
| InitializeNewComponent(IDictionary) |
Инициализирует только что созданный компонент. |
| 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 и при необходимости направляет их в элемент управления. |