IDesigner Interface

Definitie

Biedt het basisframework voor het bouwen van een aangepaste ontwerper.

public interface class IDesigner : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesigner : IDisposable
public interface IDesigner : IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesigner = interface
    interface IDisposable
type IDesigner = interface
    interface IDisposable
Public Interface IDesigner
Implements IDisposable
Afgeleid
Kenmerken
Implementeringen

Voorbeelden

In dit voorbeeld ziet u een IDesigner implementatie waarin een lokale verwijzing naar het onderdeel wordt opgeslagen, een standaardactie wordt uitgevoerd wanneer op het onderdeel wordt gedubbelklikt en een menuopdracht voor het ontwerpwerkwoord wordt geboden.

#using <System.Windows.Forms.dll>
#using <System.Data.dll>
#using <System.Drawing.dll>
#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::Data;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;

public ref class ExampleIDesigner: public System::ComponentModel::Design::IDesigner
{
private:

   // Local reference to the designer's component.
   IComponent^ component;

public:

   property System::ComponentModel::IComponent^ Component 
   {
      // Public accessor to the designer's component.
      virtual System::ComponentModel::IComponent^ get()
      {
         return component;
      }
   }
   ExampleIDesigner(){}

   virtual void Initialize( System::ComponentModel::IComponent^ component )
   {
      // This method is called after a designer for a component is created,
      // and stores a reference to the designer's component.
      this->component = component;
   }

   // This method peforms the 'default' action for the designer. The default action 
   // for a basic IDesigner implementation is invoked when the designer's component 
   // is double-clicked. By default, a component associated with a basic IDesigner 
   // implementation is displayed in the design-mode component tray.
   virtual void DoDefaultAction()
   {
      // Shows a message box indicating that the default action for the designer was invoked.
      MessageBox::Show( "The DoDefaultAction method of an IDesigner implementation was invoked.", "Information" );
   }

   property System::ComponentModel::Design::DesignerVerbCollection^ Verbs 
   {
      // Returns a collection of designer verb menu items to show in the 
      // shortcut menu for the designer's component.
      [PermissionSetAttribute(SecurityAction::Demand, Name="FullTrust")]
      virtual System::ComponentModel::Design::DesignerVerbCollection^ get()
      {
         DesignerVerbCollection^ verbs = gcnew DesignerVerbCollection;
         DesignerVerb^ dv1 = gcnew DesignerVerb( "Display Component Name",gcnew EventHandler( this, &ExampleIDesigner::ShowComponentName ) );
         verbs->Add( dv1 );
         return verbs;
      }
   }

private:

   // Event handler for displaying a message box showing the designer's component's name.
   void ShowComponentName( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      if ( this->Component != nullptr )
            MessageBox::Show( this->Component->Site->Name, "Designer Component's Name" );
   }

public:

   // Provides an opportunity to release resources before object destruction.
   ~ExampleIDesigner(){}

};

// A DesignerAttribute associates the example IDesigner with an example control.

[DesignerAttribute(ExampleIDesigner::typeid)]
public ref class TestControl: public System::Windows::Forms::UserControl
{
public:
   TestControl(){}

};
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace IDesignerExample
{	
    // A DesignerAttribute associates the example IDesigner with an example control.
    [DesignerAttribute(typeof(ExampleIDesigner))]
    public class TestControl : System.Windows.Forms.UserControl
    {				
        public TestControl()
        {	
        }
    }

    public class ExampleIDesigner : System.ComponentModel.Design.IDesigner
    {
        // Local reference to the designer's component.
        private IComponent component; 
        // Public accessor to the designer's component.
        public System.ComponentModel.IComponent Component
        {
            get
            {
                return component;
            }            
        }

        public ExampleIDesigner()
        {            
        }

        public void Initialize(System.ComponentModel.IComponent component)
        {
            // This method is called after a designer for a component is created,
            // and stores a reference to the designer's component.
            this.component = component;
        }        
        
        // This method peforms the 'default' action for the designer. The default action 
        // for a basic IDesigner implementation is invoked when the designer's component 
        // is double-clicked. By default, a component associated with a basic IDesigner 
        // implementation is displayed in the design-mode component tray.
        public void DoDefaultAction()
        {
            // Shows a message box indicating that the default action for the designer was invoked.
            MessageBox.Show("The DoDefaultAction method of an IDesigner implementation was invoked.", "Information");
        }

        // Returns a collection of designer verb menu items to show in the 
        // shortcut menu for the designer's component.
        public System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                DesignerVerbCollection verbs = new DesignerVerbCollection();
                DesignerVerb dv1 = new DesignerVerb("Display Component Name", new EventHandler(this.ShowComponentName));
                verbs.Add( dv1 );
                return verbs;
            }
        }

        // Event handler for displaying a message box showing the designer's component's name.
        private void ShowComponentName(object sender, EventArgs e)
        {
            if( this.Component != null )
                MessageBox.Show( this.Component.Site.Name, "Designer Component's Name" );
        }

        // Provides an opportunity to release resources before object destruction.
        public void Dispose()
        {        
        }
    }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms

' A DesignerAttribute associates the example IDesigner with an example control.
<DesignerAttribute(GetType(ExampleIDesigner))> _
Public Class TestControl
    Inherits System.Windows.Forms.UserControl

    Public Sub New()
    End Sub
End Class

<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class ExampleIDesigner
    Implements System.ComponentModel.Design.IDesigner

    ' Local reference to the designer's component.
    Private _component As IComponent

    ' Public accessor to the designer's component.
    Public ReadOnly Property Component() As System.ComponentModel.IComponent Implements IDesigner.Component
        Get
            Return _component
        End Get
    End Property

    Public Sub New()
    End Sub

    Public Sub Initialize(ByVal component As System.ComponentModel.IComponent) Implements IDesigner.Initialize
        ' This method is called after a designer for a component is created,
        ' and stores a reference to the designer's component.
        Me._component = component
    End Sub

    ' This method peforms the 'default' action for the designer. The default action 
    ' for a basic IDesigner implementation is invoked when the designer's component 
    ' is double-clicked. By default, a component associated with a basic IDesigner 
    ' implementation is displayed in the design-mode component tray.
    Public Sub DoDefaultAction() Implements IDesigner.DoDefaultAction
        ' Shows a message box indicating that the default action for the designer was invoked.
        MessageBox.Show("The DoDefaultAction method of an IDesigner implementation was invoked.", "Information")
    End Sub

    ' Returns a collection of designer verb menu items to show in the 
    ' shortcut menu for the designer's component.
    Public ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Implements IDesigner.Verbs
        Get
            Dim verbs_ As New DesignerVerbCollection()
            Dim dv1 As New DesignerVerb("Display Component Name", New EventHandler(AddressOf Me.ShowComponentName))
            verbs_.Add(dv1)
            Return verbs_
        End Get
    End Property

    ' Event handler for displaying a message box showing the designer's component's name.
    Private Sub ShowComponentName(ByVal sender As Object, ByVal e As EventArgs)
        If (Me.Component IsNot Nothing) Then
            MessageBox.Show(Me.Component.Site.Name, "Designer Component's Name")
        End If
    End Sub

    ' Provides an opportunity to release resources before object destruction.
    Public Sub Dispose() Implements IDisposable.Dispose
    End Sub

End Class

Opmerkingen

De IDesigner interface biedt een interface waarmee u basisservices voor een ontwerper kunt implementeren. Een ontwerper kan het gedrag van een onderdeel tijdens het ontwerp wijzigen en kan eigen services en gedrag bieden. Een ontwerper is alleen actief tijdens het ontwerpen en moet worden gekoppeld aan een type onderdeel dat DesignerAttribute moet worden geladen om te worden geladen wanneer een onderdeel van het bijbehorende type wordt gemaakt tijdens het ontwerp.

De IDesigner interface biedt methoden en eigenschappen die u kunt implementeren om aangepast gedrag tijdens het ontwerp te bieden.

Implementeer de Initialize methode van een ontwerper om acties uit te voeren wanneer een onderdeel wordt gemaakt. Dit kan handig zijn als een onderdeel tijdens het ontwerp een speciale configuratie moet hebben of als de configuratie ervan moet veranderen, afhankelijk van de voorwaarden die de ontwerper kan bepalen.

Een ontwerper kan menuopdrachten opgeven in het snelmenu dat wordt weergegeven wanneer een gebruiker met de rechtermuisknop op een onderdeel of besturingselement klikt in de ontwerpomgeving. U kunt de Verbs eigenschap implementeren om een get accessor te definiëren die een DesignerVerbCollection met de objecten retourneert voor het DesignerVerb genereren van menuopdrachten.

Een ontwerpfunctie voor een onderdeel dat in het onderdeelvak wordt weergegeven, kan een standaardactie uitvoeren wanneer op het onderdeel wordt gedubbelklikt. Implementeer de DoDefaultAction methode om het gedrag op te geven dat moet worden uitgevoerd wanneer het onderdeel wordt dubbelklikken.

Een ontwerper kan ook de beschikbare ontwerptijdservices gebruiken om verschillende taken uit te voeren, waaronder het onderzoeken van de huidige ontwerpomgeving voor onderdelen en hun eigenschappen, het lezen en instellen van de waarden van eigenschappen van onderdelen, het beheren van de werkset, het beheren van geselecteerde onderdelen of het weergeven van een gebruikersinterface die kan worden gebruikt om waarden te configureren of om verdere verwerking toe te passen.

Als u een ontwerper wilt implementeren voor een besturingselement dat op een formulier kan worden geplaatst, kunt u overnemen van de ControlDesigner klasse. Besturingselementen waarvan de bijbehorende ontwerper niet is afgeleid ControlDesigner , worden weergegeven in het onderdeelvak. De ComponentDesigner en ControlDesigner klassen implementeren de IDesigner interface en bieden aanvullende ontwerptijdondersteuning die mogelijk wordt gebruikt voor auteurs van ontwerpers. Zie de referentiedocumentatie voor deze klassen voor meer informatie.

Zie Uitbreiden Design-Time ondersteuning voor een overzicht van het maken van ontwerponderdelen.

Eigenschappen

Name Description
Component

Hiermee haalt u het basisonderdeel op dat door deze ontwerpfunctie wordt ontworpen.

Verbs

Hiermee haalt u een verzameling van de ontwerptijdwoorden op die door de ontwerpfunctie worden ondersteund.

Methoden

Name Description
Dispose()

Voert door de toepassing gedefinieerde taken uit die zijn gekoppeld aan het vrijmaken, vrijgeven of opnieuw instellen van onbeheerde resources.

(Overgenomen van IDisposable)
DoDefaultAction()

Hiermee wordt de standaardactie voor deze ontwerpfunctie uitgevoerd.

Initialize(IComponent)

Initialiseert de ontwerpfunctie met het opgegeven onderdeel.

Van toepassing op

Zie ook