Condividi tramite


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'utilizzo 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 di 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 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.

Costruttori

Nome Descrizione
ControlDesigner()

Inizializza una nuova istanza della classe ControlDesigner.

Campi

Nome Descrizione
accessibilityObj

Specifica l'oggetto accessibilità per la finestra di progettazione.

InvalidPoint

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

Proprietà

Nome Descrizione
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 la raccolta di componenti associati al componente gestito dalla finestra di progettazione.

AutoResizeHandles

Ottiene o imposta un valore che indica se l'allocazione dell'handle di ridimensionamento dipende dal valore della AutoSize proprietà .

BehaviorService

Ottiene l'oggetto BehaviorService dall'ambiente di progettazione.

Component

Ottiene il componente che la finestra di progettazione sta progettando.

(Ereditato da ComponentDesigner)
Control

Ottiene il controllo che la finestra di progettazione sta progettando.

EnableDragRect

Ottiene un valore che indica se è possibile disegnare rettangoli di trascinamento in questo 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 il componente è ereditato.

(Ereditato da ComponentDesigner)
ParentComponent

Ottiene il componente padre per l'oggetto ControlDesigner.

ParticipatesWithSnapLines

Ottiene un valore che indica se l'oggetto consentirà l'allineamento ControlDesigner della linea di allineamento durante un'operazione di trascinamento.

SelectionRules

Ottiene le regole di selezione che indicano le funzionalità di spostamento di un componente.

SetTextualDefaultProperty

Estende il comportamento della modalità di progettazione di un oggetto Control.

(Ereditato da ComponentDesigner)
ShadowProperties

Ottiene una raccolta di valori di proprietà che eseguono l'override delle impostazioni utente.

(Ereditato da ComponentDesigner)
SnapLines

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

Verbs

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

(Ereditato da ComponentDesigner)

Metodi

Nome Descrizione
BaseWndProc(Message)

Elabora Windows messaggi.

CanBeParentedTo(IDesigner)

Indica se il controllo della finestra di progettazione può essere padre 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 all'utente.

Dispose()

Rilascia tutte le risorse usate da ComponentDesigner.

(Ereditato da ComponentDesigner)
Dispose(Boolean)

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

DoDefaultAction()

Crea una firma del metodo nel file del codice sorgente per l'evento predefinito nel 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 di trascinamento della selezione per il controllo progettato.

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 di oggetti che rappresentano i bordi di Glyph selezione e i quadratini di controllo per un controllo standard.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetHitTest(Point)

Indica se un clic del mouse sul punto specificato deve essere gestito dal controllo .

GetService(Type)

Tenta di recuperare il tipo di servizio specificato dal sito in modalità progettazione del componente della finestra di progettazione.

(Ereditato da ComponentDesigner)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
HookChildControls(Control)

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

Initialize(IComponent)

Inizializza la finestra di progettazione con il componente specificato.

InitializeExistingComponent(IDictionary)

Inizializza nuovamente un componente esistente.

InitializeNewComponent(IDictionary)

Inizializza un componente appena creato.

InitializeNonDefault()

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

InitializeNonDefault()
Obsoleti.
Obsoleti.

Inizializza le impostazioni per un componente importato già inizializzato in impostazioni diverse dalle impostazioni predefinite.

(Ereditato da ComponentDesigner)
InternalControlDesigner(Int32)

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

InvokeGetInheritanceAttribute(ComponentDesigner)

Ottiene l'oggetto dell'oggetto InheritanceAttribute specificato ComponentDesigner.

(Ereditato da ComponentDesigner)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
NumberOfInternalControlDesigners()

Restituisce il numero di finestre di progettazione di controlli interni in ControlDesigner.

OnContextMenu(Int32, Int32)

Mostra il menu di scelta rapida e offre l'opportunità di eseguire ulteriori elaborazioni quando il menu di scelta rapida sta per essere visualizzato.

OnCreateHandle()

Offre l'opportunità di eseguire ulteriori elaborazioni immediatamente dopo la creazione dell'handle di controllo.

OnDragComplete(DragEventArgs)

Riceve una chiamata per pulire un'operazione di trascinamento della selezione.

OnDragDrop(DragEventArgs)

Riceve una chiamata quando un oggetto trascinamento della selezione viene rilasciato nella visualizzazione di Progettazione controlli.

OnDragEnter(DragEventArgs)

Riceve una chiamata quando un'operazione di trascinamento della selezione entra nella visualizzazione progettazione controlli.

OnDragLeave(EventArgs)

Riceve una chiamata quando un'operazione di trascinamento della selezione lascia la visualizzazione progettazione controlli.

OnDragOver(DragEventArgs)

Riceve una chiamata quando un oggetto trascinamento della selezione viene trascinato sulla visualizzazione di Progettazione controlli.

OnGiveFeedback(GiveFeedbackEventArgs)

Riceve una chiamata quando è in corso un'operazione di trascinamento della selezione per fornire segnali visivi in base alla posizione del mouse mentre è in corso un'operazione di trascinamento.

OnMouseDragBegin(Int32, Int32)

Riceve una chiamata in risposta al pulsante sinistro del mouse premuto e mantenuto durante il componente.

OnMouseDragEnd(Boolean)

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

OnMouseDragMove(Int32, Int32)

Riceve una chiamata per ogni movimento del mouse durante un'operazione di trascinamento della selezione.

OnMouseEnter()

Riceve una chiamata quando il mouse entra per la prima volta nel controllo.

OnMouseHover()

Riceve una chiamata dopo il passaggio del mouse sul controllo.

OnMouseLeave()

Riceve una chiamata quando il mouse entra per la prima volta nel controllo.

OnPaintAdornments(PaintEventArgs)

Riceve una chiamata quando il controllo che la finestra di progettazione gestisce ha disegnato la relativa superficie in modo che la finestra di progettazione possa disegnare eventuali ulteriori adornazioni sulla parte superiore del controllo.

OnSetComponentDefaults()
Obsoleti.
Obsoleti.

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 dal set di attributi esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PostFilterEvents(IDictionary)

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

(Ereditato da ComponentDesigner)
PostFilterProperties(IDictionary)

Consente a una finestra di progettazione di modificare o rimuovere elementi dal set di proprietà esposte tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterAttributes(IDictionary)

Consente a una finestra di progettazione di aggiungere al set di attributi esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterEvents(IDictionary)

Consente a una finestra di progettazione di aggiungere al set di eventi esposti tramite un oggetto TypeDescriptor.

(Ereditato da ComponentDesigner)
PreFilterProperties(IDictionary)

Regola il set di proprietà esposte 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 il componente sta per essere modificato.

(Ereditato da ComponentDesigner)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
UnhookChildControls(Control)

Indirizza i messaggi per gli elementi figlio del controllo specificato a ogni controllo anziché a una finestra di progettazione padre.

WndProc(Message)

Elabora Windows messaggi e, facoltativamente, li indirizza al controllo.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDesignerFilter.PostFilterAttributes(IDictionary)

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

(Ereditato da ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

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

(Ereditato da ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

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

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

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

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

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

(Ereditato da ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

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

(Ereditato da ComponentDesigner)
ITreeDesigner.Children

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

(Ereditato da ComponentDesigner)
ITreeDesigner.Parent

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

(Ereditato da ComponentDesigner)

Si applica a

Vedi anche