Partilhar via


ControlDesigner Classe

Definição

Estende o comportamento do modo de design de um 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
Herança
ControlDesigner
Derivado

Exemplos

A implementação de exemplo ControlDesigner a IDesignerFilter seguir demonstra o tratamento MouseEnter e MouseLeave os eventos, desenhando em um controle do código do designer e usando parte da interface para adicionar uma propriedade para o controle em tempo de design. O código de exemplo a seguir contém um designer e um controle de usuário de exemplo associado ao designer. Para criar este exemplo, compile o exemplo em uma biblioteca de classes, adicione uma referência à biblioteca a um projeto Windows Forms, adicione o controle à Caixa de Ferramentas e adicione uma instância do controle ao formulário. Quando você aponta para o controle, a estrutura de tópicos interna do perímetro do controle é realçada e a cor usada para desenhar a estrutura de tópicos corresponde à OutlineColor propriedade que o designer adicionou às propriedades listadas para o controle.

Adicione uma referência ao assembly System.Design para compilar o exemplo 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

Comentários

ControlDesigner fornece uma classe base para designers de componentes que derivam de Control. Além dos métodos e funcionalidade herdados da ComponentDesigner classe, ControlDesigner fornece métodos adicionais para dar suporte à extensão e alteração do comportamento de um associado Control em tempo de design.

Você pode associar um designer a um tipo usando um DesignerAttribute.

Construtores

Nome Description
ControlDesigner()

Inicializa uma nova instância da classe ControlDesigner.

Campos

Nome Description
accessibilityObj

Especifica o objeto de acessibilidade para o designer.

InvalidPoint

Define um local Point que representa os valores de um inválido Point.

Propriedades

Nome Description
AccessibilityObject

Obtém o AccessibleObject atribuído ao controle.

ActionLists

Obtém as listas de ações de tempo de design compatíveis com o componente associado ao designer.

(Herdado de ComponentDesigner)
AssociatedComponents

Obtém a coleção de componentes associados ao componente gerenciado pelo designer.

AutoResizeHandles

Obtém ou define um valor que indica se a alocação do identificador de redimensionamento depende do valor da AutoSize propriedade.

BehaviorService

Obtém o BehaviorService ambiente de design.

Component

Obtém o componente que este designer está projetando.

(Herdado de ComponentDesigner)
Control

Obtém o controle que o designer está projetando.

EnableDragRect

Obtém um valor que indica se os retângulos de arrastar podem ser desenhados neste componente de designer.

InheritanceAttribute

Obtém o InheritanceAttribute designer.

InheritanceAttribute

Obtém um atributo que indica o tipo de herança do componente associado.

(Herdado de ComponentDesigner)
Inherited

Obtém um valor que indica se esse componente é herdado.

(Herdado de ComponentDesigner)
ParentComponent

Obtém o componente pai do ControlDesigner.

ParticipatesWithSnapLines

Obtém um valor que indica se o ControlDesigner alinhamento do snapline será permitido durante uma operação de arrastar.

SelectionRules

Obtém as regras de seleção que indicam os recursos de movimentação de um componente.

SetTextualDefaultProperty

Estende o comportamento do modo de design de um Control.

(Herdado de ComponentDesigner)
ShadowProperties

Obtém uma coleção de valores de propriedade que substituem as configurações do usuário.

(Herdado de ComponentDesigner)
SnapLines

Obtém uma lista de SnapLine objetos que representam pontos de alinhamento significativos para esse controle.

Verbs

Obtém os verbos de tempo de design compatíveis com o componente associado ao designer.

(Herdado de ComponentDesigner)

Métodos

Nome Description
BaseWndProc(Message)

Processos Windows mensagens.

CanBeParentedTo(IDesigner)

Indica se o controle desse designer pode ser pai do controle do designer especificado.

DefWndProc(Message)

Fornece processamento padrão para mensagens Windows.

DisplayError(Exception)

Exibe informações sobre a exceção especificada para o usuário.

Dispose()

Libera todos os recursos usados pelo ComponentDesigner.

(Herdado de ComponentDesigner)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo ControlDesigner e, opcionalmente, libera os recursos gerenciados.

DoDefaultAction()

Cria uma assinatura de método no arquivo de código-fonte para o evento padrão no componente e navega o cursor do usuário para esse local.

(Herdado de ComponentDesigner)
EnableDesignMode(Control, String)

Habilita a funcionalidade de tempo de design para um controle filho.

EnableDragDrop(Boolean)

Habilita ou desabilita o suporte de arrastar e soltar para o controle que está sendo projetado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetControlGlyph(GlyphSelectionType)

Retorna um ControlBodyGlyph que representa os limites desse controle.

GetGlyphs(GlyphSelectionType)

Obtém uma coleção de Glyph objetos que representam as bordas de seleção e alças de captura para um controle padrão.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetHitTest(Point)

Indica se um clique do mouse no ponto especificado deve ser manipulado pelo controle.

GetService(Type)

Tenta recuperar o tipo de serviço especificado do site de modo de design do componente do designer.

(Herdado de ComponentDesigner)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HookChildControls(Control)

Roteia mensagens dos controles filho do controle especificado para o designer.

Initialize(IComponent)

Inicializa o designer com o componente especificado.

InitializeExistingComponent(IDictionary)

Inicializa novamente um componente existente.

InitializeNewComponent(IDictionary)

Inicializa um componente recém-criado.

InitializeNonDefault()

Inicializa as propriedades do controle para quaisquer valores não padrão.

InitializeNonDefault()
Obsoleto.
Obsoleto.

Inicializa as configurações de um componente importado que já está inicializado em configurações diferentes dos padrões.

(Herdado de ComponentDesigner)
InternalControlDesigner(Int32)

Retorna o designer de controle interno com o índice especificado no ControlDesigner.

InvokeGetInheritanceAttribute(ComponentDesigner)

Obtém o InheritanceAttribute da especificada ComponentDesigner.

(Herdado de ComponentDesigner)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
NumberOfInternalControlDesigners()

Retorna o número de designers de controle internos no ControlDesigner.

OnContextMenu(Int32, Int32)

Mostra o menu de contexto e oferece uma oportunidade de executar processamento adicional quando o menu de contexto está prestes a ser exibido.

OnCreateHandle()

Oferece uma oportunidade para executar processamento adicional imediatamente após a criação do identificador de controle.

OnDragComplete(DragEventArgs)

Recebe uma chamada para limpar uma operação de arrastar e soltar.

OnDragDrop(DragEventArgs)

Recebe uma chamada quando um objeto de arrastar e soltar é lançado no modo de exibição do designer de controle.

OnDragEnter(DragEventArgs)

Recebe uma chamada quando uma operação de arrastar e soltar entra no modo de exibição do designer de controle.

OnDragLeave(EventArgs)

Recebe uma chamada quando uma operação de arrastar e soltar deixa a exibição do designer de controle.

OnDragOver(DragEventArgs)

Recebe uma chamada quando um objeto de arrastar e soltar é arrastado sobre o modo de exibição do designer de controle.

OnGiveFeedback(GiveFeedbackEventArgs)

Recebe uma chamada quando uma operação de arrastar e soltar está em andamento para fornecer indicações visuais com base no local do mouse enquanto uma operação de arrastar está em andamento.

OnMouseDragBegin(Int32, Int32)

Recebe uma chamada em resposta ao botão esquerdo do mouse que está sendo pressionado e mantido sobre o componente.

OnMouseDragEnd(Boolean)

Recebe uma chamada no final de uma operação de arrastar e soltar para concluir ou cancelar a operação.

OnMouseDragMove(Int32, Int32)

Recebe uma chamada para cada movimento do mouse durante uma operação de arrastar e soltar.

OnMouseEnter()

Recebe uma chamada quando o mouse entra no controle pela primeira vez.

OnMouseHover()

Recebe uma chamada depois que o mouse passa o mouse sobre o controle.

OnMouseLeave()

Recebe uma chamada quando o mouse entra no controle pela primeira vez.

OnPaintAdornments(PaintEventArgs)

Recebe uma chamada quando o controle que o designer está gerenciando pintou sua superfície para que o designer possa pintar quaisquer adornos adicionais sobre o controle.

OnSetComponentDefaults()
Obsoleto.
Obsoleto.

Chamado quando o designer é inicializado.

OnSetCursor()

Recebe uma chamada sempre que o cursor precisa ser definido.

PostFilterAttributes(IDictionary)

Permite que um designer altere ou remova itens do conjunto de atributos que ele expõe por meio de um TypeDescriptor.

(Herdado de ComponentDesigner)
PostFilterEvents(IDictionary)

Permite que um designer altere ou remova itens do conjunto de eventos que ele expõe por meio de um TypeDescriptor.

(Herdado de ComponentDesigner)
PostFilterProperties(IDictionary)

Permite que um designer altere ou remova itens do conjunto de propriedades que ele expõe por meio de um TypeDescriptor.

(Herdado de ComponentDesigner)
PreFilterAttributes(IDictionary)

Permite que um designer adicione ao conjunto de atributos que ele expõe por meio de um TypeDescriptor.

(Herdado de ComponentDesigner)
PreFilterEvents(IDictionary)

Permite que um designer adicione ao conjunto de eventos que ele expõe por meio de um TypeDescriptor.

(Herdado de ComponentDesigner)
PreFilterProperties(IDictionary)

Ajusta o conjunto de propriedades que o componente expõe por meio de um TypeDescriptor.

RaiseComponentChanged(MemberDescriptor, Object, Object)

Notifica que IComponentChangeService esse componente foi alterado.

(Herdado de ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

Notifica que IComponentChangeService esse componente está prestes a ser alterado.

(Herdado de ComponentDesigner)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
UnhookChildControls(Control)

Roteia mensagens para os filhos do controle especificado para cada controle em vez de para um designer pai.

WndProc(Message)

Processos Windows mensagens e, opcionalmente, as roteia para o controle.

Implantações explícitas de interface

Nome Description
IDesignerFilter.PostFilterAttributes(IDictionary)

Para obter uma descrição desse membro, consulte o PostFilterAttributes(IDictionary) método.

(Herdado de ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

Para obter uma descrição desse membro, consulte o PostFilterEvents(IDictionary) método.

(Herdado de ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

Para obter uma descrição desse membro, consulte o PostFilterProperties(IDictionary) método.

(Herdado de ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

Para obter uma descrição desse membro, consulte o PreFilterAttributes(IDictionary) método.

(Herdado de ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

Para obter uma descrição desse membro, consulte o PreFilterEvents(IDictionary) método.

(Herdado de ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

Para obter uma descrição desse membro, consulte o PreFilterProperties(IDictionary) método.

(Herdado de ComponentDesigner)
ITreeDesigner.Children

Para obter uma descrição desse membro, consulte a Children propriedade.

(Herdado de ComponentDesigner)
ITreeDesigner.Parent

Para obter uma descrição desse membro, consulte a Parent propriedade.

(Herdado de ComponentDesigner)

Aplica-se a

Confira também