ControlDesigner Classe

Definizione

Estende il comportamento della modalità di progettazione di un oggetto 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
Ereditarietà
ControlDesigner
Derivato

Esempio

L'implementazione di esempio ControlDesigner seguente illustra la gestione MouseEnter e MouseLeave gli eventi, il disegno di un controllo dal codice della finestra di progettazione e l'uso di parte dell'interfaccia IDesignerFilter per aggiungere una proprietà per il controllo in fase di progettazione. Il codice di esempio seguente contiene una finestra di progettazione e un controllo utente di esempio associato alla finestra di progettazione. Per compilare questo esempio, compilare l'esempio in una libreria di classi, aggiungere un riferimento alla libreria a un progetto Windows Forms, aggiungere il controllo alla casella degli strumenti e aggiungere un'istanza del controllo al modulo. Quando si punta al controllo, viene evidenziato il contorno interno del perimetro del controllo e il colore utilizzato per disegnare la struttura corrisponde alla OutlineColor proprietà aggiunta dalla finestra di progettazione alle proprietà elencate per il controllo.

Aggiungere un riferimento all'assembly System.Design per compilare l'esempio di codice.

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

Commenti

ControlDesigner fornisce una classe di base per le finestre di progettazione dei componenti che derivano da Control. Oltre ai metodi e alle funzionalità ereditati dalla ComponentDesigner classe , ControlDesigner fornisce metodi aggiuntivi per supportare l'estensione e la modifica del comportamento di un oggetto associato Control in fase di progettazione.

È possibile associare una finestra di progettazione a un tipo usando un oggetto DesignerAttribute. Per una panoramica della personalizzazione del comportamento della fase di progettazione, vedere Estensione del supporto Design-Time.

Costruttori

ControlDesigner()

Inizializza una nuova istanza della classe ControlDesigner.

Campi

accessibilityObj

Specifica l'oggetto Accessibility per la finestra di progettazione.

InvalidPoint

Definisce un oggetto Point locale che rappresenta i valori di un oggetto Point non valido.

Proprietà

AccessibilityObject

Ottiene l'oggetto AccessibleObject assegnato al controllo.

ActionLists

Ottiene gli elenchi di azioni in fase di progettazione supportati dal componente associato alla finestra di progettazione.

(Ereditato da ComponentDesigner)
AssociatedComponents

Ottiene l'insieme dei componenti associati al componente gestito dalla finestra di progettazione.

AutoResizeHandles

Ottiene o imposta un valore che indica se l'assegnazione dei quadratini di ridimensionamento dipende dal valore della proprietà AutoSize.

BehaviorService

Ottiene l'oggetto BehaviorService dall'ambiente di progettazione.

Component

Ottiene il componente progettato dalla finestra di progettazione.

(Ereditato da ComponentDesigner)
Control

Ottiene il controllo progettato tramite la finestra di progettazione.

EnableDragRect

Ottiene un valore che indica se è possibile creare i rettangoli di trascinamento sul componente della finestra di progettazione.

InheritanceAttribute

Ottiene l'oggetto InheritanceAttribute della finestra di progettazione.

InheritanceAttribute

Ottiene un attributo che indica il tipo di ereditarietà del componente associato.

(Ereditato da ComponentDesigner)
Inherited

Ottiene un valore che indica se questo componente è ereditato.

(Ereditato da ComponentDesigner)
ParentComponent

Ottiene il componente padre per l'oggetto ControlDesigner.

ParentComponent

Ottiene il componente padre per la finestra di progettazione.

(Ereditato da ComponentDesigner)
ParticipatesWithSnapLines

Ottiene un valore che indica se l'oggetto ControlDesigner consente l'allineamento con guide durante un'operazione di trascinamento.

SelectionRules

Ottiene le regole di selezione che indicano funzioni di spostamento di un componente.

ShadowProperties

Ottiene un insieme di valori di proprietà che eseguono l'override delle impostazioni utente.

(Ereditato da ComponentDesigner)
SnapLines

Ottiene un elenco degli oggetti SnapLine che rappresentano punti di allineamento significativi per questo controllo.

Verbs

Ottiene i verbi in fase di progettazione supportati dal componente associato alla finestra di progettazione.

(Ereditato da ComponentDesigner)

Metodi

BaseWndProc(Message)

Elabora i messaggi di Windows.

CanBeParentedTo(IDesigner)

Indica se il controllo di questa finestra di progettazione può essere figlio del controllo della finestra di progettazione specificata.

DefWndProc(Message)

Fornisce l'elaborazione predefinita per i messaggi di Windows.

DisplayError(Exception)

Visualizza informazioni sull'eccezione specificata.

Dispose()

Rilascia tutte le risorse usate da ComponentDesigner.

(Ereditato da ComponentDesigner)
Dispose(Boolean)

Rilascia le risorse non gestite usate da ControlDesigner e, facoltativamente, le risorse gestite.

DoDefaultAction()

Crea una firma di metodo nel file di codice sorgente per l'evento predefinito sul componente e sposta il cursore dell'utente in tale posizione.

(Ereditato da ComponentDesigner)
EnableDesignMode(Control, String)

Abilita la funzionalità della fase di progettazione per un controllo figlio.

EnableDragDrop(Boolean)

Abilita o disabilita il supporto delle operazioni di trascinamento per il controllo in fase di progettazione.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetControlGlyph(GlyphSelectionType)

Restituisce un oggetto ControlBodyGlyph che rappresenta i limiti di questo controllo.

GetGlyphs(GlyphSelectionType)

Ottiene un insieme degli oggetti Glyph che rappresentano i bordi di selezione e i punti di controllo per un controllo standard.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetHitTest(Point)

Indica se il clic del mouse nel punto specificato deve essere gestito dal controllo.

GetService(Type)

Esegue un tentativo di recuperare il tipo di servizio specificato dal sito della modalità progettazione del componente della finestra di progettazione.

(Ereditato da ComponentDesigner)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
HookChildControls(Control)

Invia alla finestra di progettazione i messaggi dai controlli figlio del controllo specificato.

Initialize(IComponent)

Inizializza la finestra di progettazione con il componente specificato.

InitializeExistingComponent(IDictionary)

Reinizializza un componente esistente.

InitializeExistingComponent(IDictionary)

Reinizializza un componente esistente.

(Ereditato da ComponentDesigner)
InitializeNewComponent(IDictionary)

Inizializza un nuovo componente creato.

InitializeNewComponent(IDictionary)

Inizializza un nuovo componente creato.

(Ereditato da ComponentDesigner)
InitializeNonDefault()

Inizializza le proprietà del controllo su qualsiasi valore non predefinito.

InitializeNonDefault()
Obsoleta.
Obsoleta.

Inizializza le impostazioni relative a un componente importato già inizializzato per impostazioni diverse da quelle predefinite.

(Ereditato da ComponentDesigner)
InternalControlDesigner(Int32)

Restituisce la finestra di progettazione controlli interna con l'indice specificato nell'oggetto ControlDesigner.

InvokeGetInheritanceAttribute(ComponentDesigner)

Ottiene l'oggetto InheritanceAttribute dell'oggetto ComponentDesigner specificato.

(Ereditato da ComponentDesigner)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
NumberOfInternalControlDesigners()

Restituisce il numero di finestre di progettazione controlli interne nell'oggetto ControlDesigner.

OnContextMenu(Int32, Int32)

Visualizza il menu di scelta rapida e consente di eseguire un'ulteriore elaborazione quando tale menu sta per essere visualizzato.

OnCreateHandle()

Consente di eseguire un'ulteriore elaborazione subito dopo la creazione dell'handle del controllo.

OnDragComplete(DragEventArgs)

Riceve una chiamata per la pulitura di un'operazione di trascinamento e rilascio.

OnDragDrop(DragEventArgs)

Riceve una chiamata quando un oggetto a trascinamento e rilascio viene rilasciato nella finestra di progettazione del controllo.

OnDragEnter(DragEventArgs)

Riceve una chiamata quando un'operazione di trascinamento e rilascio entra nella finestra di progettazione del controllo.

OnDragLeave(EventArgs)

Riceve una chiamata quando un'operazione di trascinamento e rilascio esce dalla finestra di progettazione del controllo.

OnDragOver(DragEventArgs)

Riceve una chiamata quando un oggetto a trascinamento e rilascio viene trascinato nella finestra di progettazione del controllo.

OnGiveFeedback(GiveFeedbackEventArgs)

Riceve una chiamata durante l'esecuzione di un'operazione di trascinamento e rilascio, per fornire suggerimenti visivi in base alla posizione del mouse durante il trascinamento.

OnMouseDragBegin(Int32, Int32)

Riceve una chiamata quando il pulsante sinistro del mouse viene tenuto premuto mentre il puntatore è posizionato sul componente.

OnMouseDragEnd(Boolean)

Riceve una chiamata alla fine di un'operazione di trascinamento e rilascio per completare o annullare l'operazione.

OnMouseDragMove(Int32, Int32)

Riceve una chiamata per ciascun movimento del mouse durante un'operazione di trascinamento e rilascio.

OnMouseEnter()

Riceve una chiamata quando il mouse viene posizionato per la prima volta sul controllo.

OnMouseHover()

Riceve una chiamata dopo il passaggio del mouse sul controllo.

OnMouseLeave()

Riceve una chiamata quando il mouse viene posizionato per la prima volta sul controllo.

OnPaintAdornments(PaintEventArgs)

Riceve una chiamata una volta che il controllo gestito dalla finestra di progettazione ha creato la relativa superficie, in modo da consentire l'uso della finestra di progettazione per aggiungere ulteriori disegni sul controllo.

OnSetComponentDefaults()
Obsoleta.
Obsoleta.

Viene chiamato quando la finestra di progettazione viene inizializzata.

OnSetCursor()

Riceve una chiamata ogni volta che è necessario impostare il cursore.

PostFilterAttributes(IDictionary)

Consente a una finestra di progettazione di modificare o rimuovere elementi dall'insieme di attributi esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PostFilterEvents(IDictionary)

Consente a una finestra di progettazione di modificare o rimuovere elementi dal gruppo di eventi esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PostFilterProperties(IDictionary)

Consente a una finestra di progettazione di modificare o rimuovere elementi dall'insieme di proprietà esposte tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterAttributes(IDictionary)

Consente a una finestra di progettazione di aggiungere un insieme di attributi che vengono esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterEvents(IDictionary)

Consente a una finestra di progettazione di aggiungere un insieme di eventi che vengono esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterProperties(IDictionary)

Regola l'insieme di proprietà che verrà esposto dal componente tramite un oggetto TypeDescriptor.

RaiseComponentChanged(MemberDescriptor, Object, Object)

Notifica all'oggetto IComponentChangeService che questo componente è stato modificato.

(Ereditato da ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

Notifica all'oggetto IComponentChangeService che questo componente sta per essere modificato.

(Ereditato da ComponentDesigner)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
UnhookChildControls(Control)

Invia i messaggi per i controlli figlio del controllo specificato a ciascun controllo anziché a una finestra di progettazione padre.

WndProc(Message)

Elabora i messaggi di Windows ed eventualmente li invia al controllo.

Implementazioni dell'interfaccia esplicita

IDesignerFilter.PostFilterAttributes(IDictionary)

Per una descrizione di questo membro, vedere il metodo PostFilterAttributes(IDictionary).

(Ereditato da ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

Per una descrizione di questo membro, vedere il metodo PostFilterEvents(IDictionary).

(Ereditato da ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

Per una descrizione di questo membro, vedere il metodo PostFilterProperties(IDictionary).

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

Per una descrizione di questo membro, vedere il metodo PreFilterAttributes(IDictionary).

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

Per una descrizione di questo membro, vedere il metodo PreFilterEvents(IDictionary).

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

Per una descrizione di questo membro, vedere il metodo PreFilterProperties(IDictionary).

(Ereditato da ComponentDesigner)
ITreeDesigner.Children

Per una descrizione di questo membro, vedere la proprietà Children.

(Ereditato da ComponentDesigner)
ITreeDesigner.Parent

Per una descrizione di questo membro, vedere la proprietà Parent.

(Ereditato da ComponentDesigner)

Si applica a

Vedi anche