ControlDesigner Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Extends the design mode behavior of a 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
- Inheritance
- Derived
Examples
The following example ControlDesigner implementation demonstrates handling MouseEnter
and MouseLeave
events, drawing on a control from designer code, and using part of the IDesignerFilter interface to add a property for the control at design time. The following sample code contains a designer and a sample user control associated with the designer. To build this sample, compile the sample into a class library, add a reference to the library to a Windows Forms project, add the control to the Toolbox, and add an instance of the control to your form. When you point to the control, the inner outline of the perimeter of the control is highlighted, and the color used to draw the outline corresponds to the OutlineColor
property that the designer has added to the properties listed for the control.
Add a reference to the System.Design assembly to compile the code example.
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
Remarks
ControlDesigner provides a base class for designers of components that derive from Control. In addition to the methods and functionality inherited from the ComponentDesigner class, ControlDesigner provides additional methods to support extending and altering the behavior of an associated Control at design time.
You can associate a designer with a type using a DesignerAttribute. For an overview of customizing design time behavior, see Extending Design-Time Support.
Constructors
ControlDesigner() |
Initializes a new instance of the ControlDesigner class. |
Fields
accessibilityObj |
Specifies the accessibility object for the designer. |
InvalidPoint |
Defines a local Point that represents the values of an invalid Point. |
Properties
AccessibilityObject |
Gets the AccessibleObject assigned to the control. |
ActionLists |
Gets the design-time action lists supported by the component associated with the designer. (Inherited from ComponentDesigner) |
AssociatedComponents |
Gets the collection of components associated with the component managed by the designer. |
AutoResizeHandles |
Gets or sets a value indicating whether resize handle allocation depends on the value of the AutoSize property. |
BehaviorService |
Gets the BehaviorService from the design environment. |
Component |
Gets the component this designer is designing. (Inherited from ComponentDesigner) |
Control |
Gets the control that the designer is designing. |
EnableDragRect |
Gets a value indicating whether drag rectangles can be drawn on this designer component. |
InheritanceAttribute |
Gets the InheritanceAttribute of the designer. |
InheritanceAttribute |
Gets an attribute that indicates the type of inheritance of the associated component. (Inherited from ComponentDesigner) |
Inherited |
Gets a value indicating whether this component is inherited. (Inherited from ComponentDesigner) |
ParentComponent |
Gets the parent component for the ControlDesigner. |
ParentComponent |
Gets the parent component for this designer. (Inherited from ComponentDesigner) |
ParticipatesWithSnapLines |
Gets a value indicating whether the ControlDesigner will allow snapline alignment during a drag operation. |
SelectionRules |
Gets the selection rules that indicate the movement capabilities of a component. |
SetTextualDefaultProperty | (Inherited from ComponentDesigner) |
ShadowProperties |
Gets a collection of property values that override user settings. (Inherited from ComponentDesigner) |
SnapLines |
Gets a list of SnapLine objects representing significant alignment points for this control. |
Verbs |
Gets the design-time verbs supported by the component that is associated with the designer. (Inherited from ComponentDesigner) |
Methods
BaseWndProc(Message) |
Processes Windows messages. |
CanBeParentedTo(IDesigner) |
Indicates if this designer's control can be parented by the control of the specified designer. |
DefWndProc(Message) |
Provides default processing for Windows messages. |
DisplayError(Exception) |
Displays information about the specified exception to the user. |
Dispose() |
Releases all resources used by the ComponentDesigner. (Inherited from ComponentDesigner) |
Dispose(Boolean) |
Releases the unmanaged resources used by the ControlDesigner and optionally releases the managed resources. |
DoDefaultAction() |
Creates a method signature in the source code file for the default event on the component and navigates the user's cursor to that location. (Inherited from ComponentDesigner) |
EnableDesignMode(Control, String) |
Enables design time functionality for a child control. |
EnableDragDrop(Boolean) |
Enables or disables drag-and-drop support for the control being designed. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetControlGlyph(GlyphSelectionType) |
Returns a ControlBodyGlyph representing the bounds of this control. |
GetGlyphs(GlyphSelectionType) |
Gets a collection of Glyph objects representing the selection borders and grab handles for a standard control. |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetHitTest(Point) |
Indicates whether a mouse click at the specified point should be handled by the control. |
GetService(Type) |
Attempts to retrieve the specified type of service from the design mode site of the designer's component. (Inherited from ComponentDesigner) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
HookChildControls(Control) |
Routes messages from the child controls of the specified control to the designer. |
Initialize(IComponent) |
Initializes the designer with the specified component. |
InitializeExistingComponent(IDictionary) |
Re-initializes an existing component. |
InitializeExistingComponent(IDictionary) |
Reinitializes an existing component. (Inherited from ComponentDesigner) |
InitializeNewComponent(IDictionary) |
Initializes a newly created component. |
InitializeNewComponent(IDictionary) |
Initializes a newly created component. (Inherited from ComponentDesigner) |
InitializeNonDefault() |
Initializes properties of the control to any non-default values. |
InitializeNonDefault() |
Obsolete.
Obsolete.
Initializes the settings for an imported component that is already initialized to settings other than the defaults. (Inherited from ComponentDesigner) |
InternalControlDesigner(Int32) |
Returns the internal control designer with the specified index in the ControlDesigner. |
InvokeGetInheritanceAttribute(ComponentDesigner) |
Gets the InheritanceAttribute of the specified ComponentDesigner. (Inherited from ComponentDesigner) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
NumberOfInternalControlDesigners() |
Returns the number of internal control designers in the ControlDesigner. |
OnContextMenu(Int32, Int32) |
Shows the context menu and provides an opportunity to perform additional processing when the context menu is about to be displayed. |
OnCreateHandle() |
Provides an opportunity to perform additional processing immediately after the control handle has been created. |
OnDragComplete(DragEventArgs) |
Receives a call to clean up a drag-and-drop operation. |
OnDragDrop(DragEventArgs) |
Receives a call when a drag-and-drop object is dropped onto the control designer view. |
OnDragEnter(DragEventArgs) |
Receives a call when a drag-and-drop operation enters the control designer view. |
OnDragLeave(EventArgs) |
Receives a call when a drag-and-drop operation leaves the control designer view. |
OnDragOver(DragEventArgs) |
Receives a call when a drag-and-drop object is dragged over the control designer view. |
OnGiveFeedback(GiveFeedbackEventArgs) |
Receives a call when a drag-and-drop operation is in progress to provide visual cues based on the location of the mouse while a drag operation is in progress. |
OnMouseDragBegin(Int32, Int32) |
Receives a call in response to the left mouse button being pressed and held while over the component. |
OnMouseDragEnd(Boolean) |
Receives a call at the end of a drag-and-drop operation to complete or cancel the operation. |
OnMouseDragMove(Int32, Int32) |
Receives a call for each movement of the mouse during a drag-and-drop operation. |
OnMouseEnter() |
Receives a call when the mouse first enters the control. |
OnMouseHover() |
Receives a call after the mouse hovers over the control. |
OnMouseLeave() |
Receives a call when the mouse first enters the control. |
OnPaintAdornments(PaintEventArgs) |
Receives a call when the control that the designer is managing has painted its surface so the designer can paint any additional adornments on top of the control. |
OnSetComponentDefaults() |
Obsolete.
Obsolete.
Called when the designer is initialized. |
OnSetCursor() |
Receives a call each time the cursor needs to be set. |
PostFilterAttributes(IDictionary) |
Allows a designer to change or remove items from the set of attributes that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner) |
PostFilterEvents(IDictionary) |
Allows a designer to change or remove items from the set of events that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner) |
PostFilterProperties(IDictionary) |
Allows a designer to change or remove items from the set of properties that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner) |
PreFilterAttributes(IDictionary) |
Allows a designer to add to the set of attributes that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner) |
PreFilterEvents(IDictionary) |
Allows a designer to add to the set of events that it exposes through a TypeDescriptor. (Inherited from ComponentDesigner) |
PreFilterProperties(IDictionary) |
Adjusts the set of properties the component exposes through a TypeDescriptor. |
RaiseComponentChanged(MemberDescriptor, Object, Object) |
Notifies the IComponentChangeService that this component has been changed. (Inherited from ComponentDesigner) |
RaiseComponentChanging(MemberDescriptor) |
Notifies the IComponentChangeService that this component is about to be changed. (Inherited from ComponentDesigner) |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
UnhookChildControls(Control) |
Routes messages for the children of the specified control to each control rather than to a parent designer. |
WndProc(Message) |
Processes Windows messages and optionally routes them to the control. |