ControlDesigner Clase

Definición

Extiende el comportamiento de un objeto Control en modo de diseño.

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
Herencia
ControlDesigner
Derivado

Ejemplos

En la siguiente implementación de ejemplo ControlDesigner se muestra el control MouseEnter y MouseLeave los eventos, el dibujo en un control del código del diseñador y el uso de parte de la IDesignerFilter interfaz para agregar una propiedad para el control en tiempo de diseño. El código de ejemplo siguiente contiene un diseñador y un control de usuario de ejemplo asociado al diseñador. Para compilar este ejemplo, compile el ejemplo en una biblioteca de clases, agregue una referencia a la biblioteca a un proyecto de Windows Forms, agregue el control al Cuadro de herramientas y agregue una instancia del control al formulario. Al apuntar al control, el contorno interno del perímetro del control está resaltado y el color usado para dibujar el contorno corresponde a la OutlineColor propiedad que el diseñador ha agregado a las propiedades enumeradas para el control.

Agregue una referencia al ensamblado System.Design para compilar el ejemplo de código.

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

Comentarios

ControlDesigner proporciona una clase base para diseñadores de componentes que derivan de Control. Además de los métodos y la funcionalidad heredados de la ComponentDesigner clase , ControlDesigner proporciona métodos adicionales para admitir la extensión y modificación del comportamiento de un asociado Control en tiempo de diseño.

Puede asociar un diseñador a un tipo mediante .DesignerAttribute Para obtener información general sobre cómo personalizar el comportamiento del tiempo de diseño, consulte Extensión de Design-Time soporte técnico.

Constructores

ControlDesigner()

Inicializa una nueva instancia de la clase ControlDesigner.

Campos

accessibilityObj

Especifica el objeto de accesibilidad para el diseñador.

InvalidPoint

Define un Point local que representa los valores de un Point no válido.

Propiedades

AccessibilityObject

Obtiene AccessibleObject asignado al control.

ActionLists

Obtiene las listas de acciones en tiempo de diseño que admite el componente asociado al diseñador.

(Heredado de ComponentDesigner)
AssociatedComponents

Obtiene la colección de componentes asociados al componente administrado por el diseñador.

AutoResizeHandles

Obtiene o establece un valor que indica si la asignación del controlador de cambio de tamaño depende del valor de la propiedad AutoSize.

BehaviorService

Obtiene el BehaviorService del entorno de diseño.

Component

Obtiene el componente que el diseñador está creando.

(Heredado de ComponentDesigner)
Control

Obtiene el control que diseña el diseñador.

EnableDragRect

Obtiene un valor que indica si se pueden dibujar rectángulos de arrastre en este componente del diseñador.

InheritanceAttribute

Obtiene el InheritanceAttribute del diseñador.

InheritanceAttribute

Obtiene un atributo que indica el tipo de herencia del componente asociado.

(Heredado de ComponentDesigner)
Inherited

Obtiene un valor que indica si este componente es heredado.

(Heredado de ComponentDesigner)
ParentComponent

Obtiene el componente principal de ControlDesigner.

ParentComponent

Obtiene el componente primario de este diseñador.

(Heredado de ComponentDesigner)
ParticipatesWithSnapLines

Obtiene un valor que indica si ControlDesigner permitirá la alineación de las líneas de ajuste durante una operación de arrastre.

SelectionRules

Obtiene las reglas de selección que indican las posibilidades de movimiento de un componente.

SetTextualDefaultProperty

Extiende el comportamiento de un objeto Control en modo de diseño.

(Heredado de ComponentDesigner)
ShadowProperties

Obtiene una colección de valores de propiedad que reemplazan la configuración del usuario.

(Heredado de ComponentDesigner)
SnapLines

Obtiene una lista de objetos SnapLine que representan los puntos de alineación significativos de este control.

Verbs

Obtiene los verbos en tiempo de diseño que admite el componente asociado al diseñador.

(Heredado de ComponentDesigner)

Métodos

BaseWndProc(Message)

Procesa los mensajes de Windows.

CanBeParentedTo(IDesigner)

Indica si el control del diseñador especificado puede ser el principal de este control de diseñador.

DefWndProc(Message)

Proporciona procesamiento predeterminado para los mensajes de Windows.

DisplayError(Exception)

Muestra información al usuario acerca de la excepción especificada.

Dispose()

Libera todos los recursos que usa ComponentDesigner.

(Heredado de ComponentDesigner)
Dispose(Boolean)

Libera los recursos no administrados que usa ControlDesigner y, de forma opcional, libera los recursos administrados.

DoDefaultAction()

Crea una firma de método en el archivo de código fuente para el evento predeterminado del componente y hace navegar el cursor del usuario en esa ubicación.

(Heredado de ComponentDesigner)
EnableDesignMode(Control, String)

Habilita la funcionalidad en tiempo de diseño para un control secundario.

EnableDragDrop(Boolean)

Habilita o deshabilita la compatibilidad con arrastrar y colocar del control que se está diseñando.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetControlGlyph(GlyphSelectionType)

Devuelve ControlBodyGlyph que representa los límites de este control.

GetGlyphs(GlyphSelectionType)

Obtiene una colección de objetos Glyph que representan los bordes de selección y los identificadores de agarre de un control estándar.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetHitTest(Point)

Indica si el control debe controlar un clic con el mouse en el punto especificado.

GetService(Type)

Intenta recuperar el tipo de servicio especificado del sitio en modo de diseño del componente del diseñador.

(Heredado de ComponentDesigner)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
HookChildControls(Control)

Enruta los mensajes desde los controles secundarios del control especificado al diseñador.

Initialize(IComponent)

Inicializa el diseñador con el componente especificado.

InitializeExistingComponent(IDictionary)

Vuelve a inicializar un componente existente.

InitializeExistingComponent(IDictionary)

Reinicializa un componente existente.

(Heredado de ComponentDesigner)
InitializeNewComponent(IDictionary)

Inicializa un componente recién creado.

InitializeNewComponent(IDictionary)

Inicializa un componente recién creado.

(Heredado de ComponentDesigner)
InitializeNonDefault()

Inicializa las propiedades del control con los valores no predeterminados.

InitializeNonDefault()
Obsoletos.
Obsoletos.

Inicializa la configuración de un componente importado que ya se ha inicializado con una configuración que no es la predeterminada.

(Heredado de ComponentDesigner)
InternalControlDesigner(Int32)

Devuelve al diseñador de controles internos el índice especificado en ControlDesigner.

InvokeGetInheritanceAttribute(ComponentDesigner)

Obtiene el objeto InheritanceAttribute de la enumeración ComponentDesigner especificada.

(Heredado de ComponentDesigner)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
NumberOfInternalControlDesigners()

Devuelve el número de diseñadores de controles internos en ControlDesigner.

OnContextMenu(Int32, Int32)

Muestra el menú contextual y permite realizar otros procesos adicionales cuando el menú contextual está a punto de mostrarse.

OnCreateHandle()

Permite realizar otros procesos adicionales inmediatamente después de crear el identificador del control.

OnDragComplete(DragEventArgs)

Recibe una llamada para limpiar una operación de arrastrar y colocar.

OnDragDrop(DragEventArgs)

Recibe una llamada cuando se coloca un objeto de arrastrar y colocar en la vista del diseñador del control.

OnDragEnter(DragEventArgs)

Recibe una llamada cuando una operación de arrastrar y colocar entra en la vista del diseñador del control.

OnDragLeave(EventArgs)

Recibe una llamada cuando una operación de arrastrar y colocar sale de la vista del diseñador del control.

OnDragOver(DragEventArgs)

Recibe una llamada cuando se arrastra un objeto de arrastrar y colocar en la vista del diseñador del control.

OnGiveFeedback(GiveFeedbackEventArgs)

Recibe una llamada mientras se está realizando una operación de arrastrar y colocar para proporcionar guías visuales basadas en la ubicación del mouse cuando se está realizando una operación de arrastre.

OnMouseDragBegin(Int32, Int32)

Recibe una llamada cuando se presiona el botón primario del mouse y se mantiene presionado mientras está sobre el componente.

OnMouseDragEnd(Boolean)

Recibe una llamada al final de una operación de arrastrar y colocar para terminar o cancelar la operación.

OnMouseDragMove(Int32, Int32)

Recibe una llamada en cada movimiento del mouse durante una operación de arrastrar y colocar.

OnMouseEnter()

Recibe una llamada cuando el mouse entra en el control por primera vez.

OnMouseHover()

Recibe una llamada después de que el mouse se desplace sobre el control.

OnMouseLeave()

Recibe una llamada cuando el mouse entra en el control por primera vez.

OnPaintAdornments(PaintEventArgs)

Recibe una llamada cuando el control que el diseñador está administrando tiene su superficie dibujada, de manera que el diseñador pueda dibujar otros adornos en la parte superior del control.

OnSetComponentDefaults()
Obsoletos.
Obsoletos.

Se llama cuando se inicializa el diseñador.

OnSetCursor()

Recibe una llamada cada vez que es necesario establecer el cursor.

PostFilterAttributes(IDictionary)

Permite a un diseñador cambiar o quitar elementos en el conjunto de atributos que expone mediante un TypeDescriptor.

(Heredado de ComponentDesigner)
PostFilterEvents(IDictionary)

Permite a un diseñador cambiar o quitar elementos del conjunto de eventos que expone mediante un objeto TypeDescriptor.

(Heredado de ComponentDesigner)
PostFilterProperties(IDictionary)

Permite a un diseñador cambiar o quitar elementos del conjunto de propiedades que expone mediante un objeto TypeDescriptor.

(Heredado de ComponentDesigner)
PreFilterAttributes(IDictionary)

Permite a un diseñador agregar elementos al conjunto de atributos que expone mediante un objeto TypeDescriptor.

(Heredado de ComponentDesigner)
PreFilterEvents(IDictionary)

Permite a un diseñador agregar elementos al conjunto de eventos que expone mediante un objeto TypeDescriptor.

(Heredado de ComponentDesigner)
PreFilterProperties(IDictionary)

Ajusta el conjunto de propiedades que el componente expone mediante un TypeDescriptor.

RaiseComponentChanged(MemberDescriptor, Object, Object)

Notifica a IComponentChangeService que este componente se ha cambiado.

(Heredado de ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

Notifica a IComponentChangeService que este componente se va a cambiar.

(Heredado de ComponentDesigner)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
UnhookChildControls(Control)

Enruta los mensajes para los secundarios del control especificado a cada uno de los controles en lugar de a un diseñador principal.

WndProc(Message)

Procesa los mensajes de Windows y, de forma opcional, los enruta al control.

Implementaciones de interfaz explícitas

IDesignerFilter.PostFilterAttributes(IDictionary)

Para obtener una descripción de este miembro, vea el método PostFilterAttributes(IDictionary).

(Heredado de ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

Para obtener una descripción de este miembro, vea el método PostFilterEvents(IDictionary).

(Heredado de ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

Para obtener una descripción de este miembro, vea el método PostFilterProperties(IDictionary).

(Heredado de ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

Para obtener una descripción de este miembro, vea el método PreFilterAttributes(IDictionary).

(Heredado de ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

Para obtener una descripción de este miembro, vea el método PreFilterEvents(IDictionary).

(Heredado de ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

Para obtener una descripción de este miembro, vea el método PreFilterProperties(IDictionary).

(Heredado de ComponentDesigner)
ITreeDesigner.Children

Para una descripción de este miembro, consulte la propiedad Children.

(Heredado de ComponentDesigner)
ITreeDesigner.Parent

Para una descripción de este miembro, consulte la propiedad Parent.

(Heredado de ComponentDesigner)

Se aplica a

Consulte también