Udostępnij za pośrednictwem


IDesigner Interfejs

Definicja

Udostępnia podstawową strukturę do tworzenia projektanta niestandardowego.

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
Pochodne
Atrybuty
Implementuje

Przykłady

W tym przykładzie pokazano implementację IDesigner , która przechowuje lokalne odwołanie do jego składnika, wykonuje domyślną akcję po dwukrotnym kliknięciu składnika i udostępnia polecenie menu czasownika projektanta.

#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

Uwagi

Interfejs IDesigner udostępnia interfejs, za pomocą którego można zaimplementować podstawowe usługi dla projektanta. Projektant może zmodyfikować zachowanie składnika w czasie projektowania i zapewnić własne usługi i zachowanie. Projektant jest aktywny tylko w czasie projektowania i musi być skojarzony z typem DesignerAttribute składnika przy użyciu elementu w celu załadowania, gdy składnik skojarzonego typu jest tworzony w czasie projektowania.

Interfejs IDesigner udostępnia metody i właściwości, które można zaimplementować w celu zapewnienia niestandardowego zachowania w czasie projektowania.

Zaimplementuj metodę Initialize projektanta, aby wykonywać akcje po utworzeniu składnika. Może to być przydatne, jeśli składnik powinien mieć specjalną konfigurację w czasie projektowania lub jeśli jego konfiguracja powinna ulec zmianie w zależności od warunków, które projektant może określić.

Projektant może udostępniać polecenia menu w menu skrótów, które jest wyświetlane, gdy użytkownik kliknie prawym przyciskiem myszy składnik lub kontrolkę w środowisku czasu projektowania. Właściwość można zaimplementować Verbs , aby zdefiniować metodę get, która zwraca DesignerVerbCollection obiekty zawierające DesignerVerb obiekty do generowania poleceń menu.

Projektant składnika wyświetlanego na pasku składników może wykonać domyślną akcję po dwukrotnym kliknięciu składnika. Zaimplementuj metodę DoDefaultAction , aby określić zachowanie do wykonania, gdy składnik zostanie dwukrotnie kliknięty.

Projektant może również używać dostępnych usług czasu projektowania do wykonywania różnych zadań, w tym badania bieżącego środowiska czasu projektowania składników i ich właściwości, odczytywania i ustawiania wartości właściwości składników, zarządzania przybornikem, zarządzania wybranymi składnikami lub wyświetlania interfejsu użytkownika, który może służyć do konfigurowania wartości lub stosowania dalszego przetwarzania.

Aby zaimplementować projektanta dla kontrolki, którą można utworzyć w formularzu ControlDesigner , można dziedziczyć z klasy. Kontrolki, z których skojarzony projektant nie pochodzi, ControlDesigner są wyświetlane na pasku składników. Klasy ComponentDesigner i ControlDesigner implementują IDesigner interfejs i zapewniają dodatkową obsługę czasu projektowania, która może być używana dla autorów projektantów. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną dla tych klas.

Aby zapoznać się z omówieniem tworzenia składników projektu, zobacz Rozszerzanie obsługi Design-Time.

Właściwości

Component

Pobiera podstawowy składnik, który projektuje ten projektant.

Verbs

Pobiera kolekcję czasowników czasu projektowania obsługiwanych przez projektanta.

Metody

Dispose()

Wykonuje zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych.

(Odziedziczone po IDisposable)
DoDefaultAction()

Wykonuje akcję domyślną dla tego projektanta.

Initialize(IComponent)

Inicjuje projektanta za pomocą określonego składnika.

Dotyczy

Zobacz też