ControlDesigner Class

Definition

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
ControlDesigner
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.

Explicit Interface Implementations

IDesignerFilter.PostFilterAttributes(IDictionary)

For a description of this member, see the PostFilterAttributes(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

For a description of this member, see the PostFilterEvents(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

For a description of this member, see the PostFilterProperties(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

For a description of this member, see the PreFilterAttributes(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

For a description of this member, see the PreFilterEvents(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

For a description of this member, see the PreFilterProperties(IDictionary) method.

(Inherited from ComponentDesigner)
ITreeDesigner.Children

For a description of this member, see the Children property.

(Inherited from ComponentDesigner)
ITreeDesigner.Parent

For a description of this member, see the Parent property.

(Inherited from ComponentDesigner)

Applies to

See also