Freigeben über


IDesigner-Schnittstelle

Stellt die Grundstruktur zum Erstellen eines benutzerdefinierten Designers bereit.

Namespace: System.ComponentModel.Design
Assembly: System (in system.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public Interface IDesigner
    Inherits IDisposable
'Usage
Dim instance As IDesigner
[ComVisibleAttribute(true)] 
public interface IDesigner : IDisposable
[ComVisibleAttribute(true)] 
public interface class IDesigner : IDisposable
/** @attribute ComVisibleAttribute(true) */ 
public interface IDesigner extends IDisposable
ComVisibleAttribute(true) 
public interface IDesigner extends IDisposable

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 eigene Dienste und eigenes Verhalten bereitstellen. Ein Designer ist nur zur Entwurfszeit aktiv und muss über ein DesignerAttribute einem bestimmten Komponententyp zugeordnet werden, damit er geladen wird, wenn zur Entwurfszeit eine Komponente des zugeordneten Typs erstellt wird.

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

Implementiert die Initialize-Methode eines Designers, um Aktionen auszuführen, wenn eine Komponente erstellt wird. Dies kann nützlich sein, wenn eine Komponente zur Entwurfszeit eine spezielle Konfiguration aufweisen soll oder wenn die Konfiguration auf Grundlage von Bedingungen, die vom Designer bestimmt werden können, geändert werden soll.

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

Ein Designer für eine Komponente, die im Komponentenfach angezeigt wird, kann beim Doppelklicken auf die Komponente eine Standardaktion ausführen. Implementieren Sie die DoDefaultAction-Methode, um das Verhalten anzugeben, das beim Doppelklicken auf die Komponente ausgeführt werden soll.

Außerdem kann ein Designer mithilfe der verfügbaren Entwurfszeitdienste eine Reihe von Aufgaben durchführen, z. B. die Überwachung der aktuellen Entwurfszeitumgebung für Komponenten und ihre Eigenschaften, das Lesen und Festlegen der Werte von Eigenschaften der Komponenten, die Verwaltung der Toolbox, die Verwaltung von ausgewählten Komponenten und die Anzeige einer Benutzeroberfläche, die zum Konfigurieren der Werte oder zur Durchführung weiterer Verarbeitung verwendet werden kann.

Um einen Designer für ein Steuerelement zu implementieren, das in einem Formular platziert werden kann, können Sie die ControlDesigner-Klasse vererben. Steuerelemente, deren zugeordneter Designer nicht von ControlDesigner abgeleitet wird, werden im Komponentenfach angezeigt. Die ComponentDesigner-Klasse und die ControlDesigner-Klasse implementieren die IDesigner-Schnittstelle und stellen zusätzliche Entwurfszeitunterstützung bereit, die für Entwickler von Designern nützlich sein kann. Weitere Informationen finden Sie in der Referenzdokumentation für diese Klassen.

Eine Übersicht über das Erstellen von Entwurfskomponenten finden Sie unter Ereignisse und Delegaten.

Beispiel

In diesem Beispiel wird eine IDesigner-Implementierung veranschaulicht, die einen lokalen Verweis auf ihre Komponente speichert, beim Doppelklicken auf die Komponente eine Standardaktion ausführt und einen Designerverb-Menübefehl bereitstellt.

Imports System
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 Not (Me.Component Is 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
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()
        {   
        }
    }

    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    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()
        {        
        }
    }
}
#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(){}

};

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

IDesigner-Member
System.ComponentModel.Design-Namespace
IRootDesigner
IDesignerHost
DesignerVerb-Klasse

Weitere Ressourcen

Erweitern der Entwurfszeitunterstützung