Freigeben über


IDesigner Schnittstelle

Definition

Stellt das grundlegende Framework zum Erstellen eines benutzerdefinierten Designers bereit.

public interface class IDesigner : IDisposable
public interface IDesigner : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesigner : IDisposable
type IDesigner = interface
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesigner = interface
    interface IDisposable
Public Interface IDesigner
Implements IDisposable
Abgeleitet
Attribute
Implementiert

Beispiele

In diesem Beispiel wird eine IDesigner Implementierung veranschaulicht, die einen lokalen Verweis auf die Komponente speichert, eine Standardaktion ausführt, wenn die Komponente doppelt geklickt wird, und einen Menübefehl für das Designerverb bereitstellt.

#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

Hinweise

Die IDesigner Schnittstelle stellt eine Schnittstelle bereit, über die Sie grundlegende Dienste für einen Designer implementieren können. Ein Designer kann das Verhalten einer Komponente zur Entwurfszeit ändern und kann eigene Dienste und Verhaltensweisen bereitstellen. Ein Designer ist zur Entwurfszeit nur aktiv und muss einem Komponententyp zugeordnet werden, der verwendet DesignerAttribute wird, um geladen zu werden, wenn eine Komponente des zugeordneten Typs zur Entwurfszeit erstellt wird.

Die IDesigner Schnittstelle stellt Methoden und Eigenschaften bereit, die Sie implementieren können, um benutzerdefiniertes Verhalten zur Entwurfszeit bereitzustellen.

Implementieren Sie die Initialize Methode eines Designers, um Aktionen auszuführen, wenn eine Komponente erstellt wird. Dies kann nützlich sein, wenn eine Komponente zur Entwurfszeit über eine spezielle Konfiguration verfügen soll oder ob sich die Konfiguration je nach bedingungen ändern soll, die der Designer bestimmen kann.

Ein Designer kann Menübefehle im Kontextmenü bereitstellen, die angezeigt werden, wenn ein Benutzer mit der rechten Maustaste auf eine Komponente oder ein Steuerelement in der Entwurfszeitumgebung klickt. Sie können die Verbs Eigenschaft implementieren, um einen Get-Accessor zu definieren, der DesignerVerb die DesignerVerbCollection Objekte zum Generieren von Menübefehlen zurückgibt.

Ein Designer für eine Komponente, die in der Taskleiste der Komponente angezeigt wird, kann eine Standardaktion ausführen, wenn die Komponente doppelt darauf geklickt wird. Implementieren Sie die DoDefaultAction Methode, um das Verhalten anzugeben, das beim Doppelklicken der Komponente ausgeführt werden soll.

Ein Designer kann auch die verfügbaren Entwurfszeitdienste verwenden, um eine Vielzahl von Aufgaben auszuführen, einschließlich der Erhebung der aktuellen Entwurfszeitumgebung für Komponenten und deren Eigenschaften, Lesen und Festlegen der Werte von Eigenschaften von Komponenten, Verwalten der Toolbox, Verwalten ausgewählter Komponenten oder Anzeigen einer Benutzeroberfläche, die zum Konfigurieren von Werten oder zum Anwenden einer weiteren Verarbeitung verwendet werden kann.

Um einen Designer für ein Steuerelement zu implementieren, das auf einem Formular websiteiert werden kann, können Sie von der ControlDesigner Klasse erben. Steuerelemente, deren zugeordneter Designer nicht abgeleitet ControlDesigner wird, werden im Komponentenbereich angezeigt. ControlDesigner Die ComponentDesigner Schnittstellen und Klassen implementieren die IDesigner Schnittstelle und bieten zusätzliche Entwurfszeitunterstützung, die für Autoren von Designern verwendet werden kann. Weitere Informationen finden Sie in der Referenzdokumentation für diese Klassen.

Eine Übersicht über das Erstellen von Entwurfskomponenten finden Sie unter Erweitern Design-Time Support.

Eigenschaften

Name Beschreibung
Component

Ruft die Basiskomponente ab, die dieser Designer entwerfen soll.

Verbs

Ruft eine Auflistung der vom Designer unterstützten Entwurfszeitverben ab.

Methoden

Name Beschreibung
Dispose()

Führt anwendungsdefinierte Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen nicht verwalteter Ressourcen verknüpft sind.

(Geerbt von IDisposable)
DoDefaultAction()

Führt die Standardaktion für diesen Designer aus.

Initialize(IComponent)

Initialisiert den Designer mit der angegebenen Komponente.

Gilt für:

Weitere Informationen