IDesigner Antarmuka

Definisi

Menyediakan kerangka kerja dasar untuk membangun perancang kustom.

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
Turunan
Atribut
Penerapan

Contoh

Contoh ini menunjukkan IDesigner implementasi yang menyimpan referensi lokal ke komponennya, melakukan tindakan default saat komponen diklik dua kali, dan menyediakan perintah menu kata kerja perancang.

#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

Keterangan

Antarmuka IDesigner menyediakan antarmuka tempat Anda dapat menerapkan layanan dasar untuk perancang. Perancang dapat memodifikasi perilaku komponen pada waktu desain, dan dapat menyediakan layanan dan perilakunya sendiri. Perancang hanya aktif pada waktu desain, dan harus dikaitkan dengan jenis komponen menggunakan DesignerAttribute untuk dimuat ketika komponen jenis terkait dibuat pada waktu desain.

Antarmuka menyediakan IDesigner metode dan properti yang dapat Anda terapkan untuk memberikan perilaku kustom pada waktu desain.

Terapkan Initialize metode perancang untuk melakukan tindakan saat komponen dibuat. Ini dapat berguna jika komponen harus memiliki konfigurasi khusus pada waktu desain, atau jika konfigurasinya harus berubah tergantung pada kondisi yang dapat ditentukan perancang.

Perancang dapat menyediakan perintah menu pada menu pintasan yang ditampilkan saat pengguna mengklik kanan komponen atau kontrol di lingkungan waktu desain. Anda dapat mengimplementasikan Verbs properti untuk menentukan aksesor get yang mengembalikan yang DesignerVerbCollection berisi DesignerVerb objek untuk menghasilkan perintah menu.

Perancang untuk komponen yang muncul di baki komponen dapat melakukan tindakan default saat komponen diklik dua kali. Terapkan DoDefaultAction metode untuk menentukan perilaku yang akan dilakukan saat komponen diklik dua kali.

Perancang juga dapat menggunakan layanan waktu desain yang tersedia untuk melakukan berbagai tugas, termasuk mensurvei lingkungan waktu desain saat ini untuk komponen dan propertinya, membaca dan mengatur nilai properti komponen, mengelola kotak alat, mengelola komponen yang dipilih, atau menampilkan antarmuka pengguna yang dapat digunakan untuk mengonfigurasi nilai atau untuk menerapkan pemrosesan lebih lanjut.

Untuk mengimplementasikan perancang untuk kontrol yang dapat di-site pada formulir, Anda dapat mewarisi dari ControlDesigner kelas . Kontrol yang perancang terkaitnya tidak berasal ControlDesigner ditampilkan di baki komponen. Kelas ComponentDesigner dan ControlDesigner mengimplementasikan IDesigner antarmuka dan memberikan dukungan waktu desain tambahan yang mungkin digunakan untuk penulis perancang. Untuk informasi selengkapnya, lihat dokumentasi referensi untuk kelas-kelas ini.

Untuk gambaran umum pembuatan komponen desain, silakan lihat Memperluas Dukungan Design-Time.

Properti

Component

Mendapatkan komponen dasar yang didesain desainer ini.

Verbs

Mendapatkan koleksi kata kerja waktu desain yang didukung oleh perancang.

Metode

Dispose()

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, merilis, atau mengatur ulang sumber daya yang tidak dikelola.

(Diperoleh dari IDisposable)
DoDefaultAction()

Melakukan tindakan default untuk perancang ini.

Initialize(IComponent)

Menginisialisasi perancang dengan komponen yang ditentukan.

Berlaku untuk

Lihat juga