IDesignerHost Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan antarmuka untuk mengelola transaksi dan komponen perancang.
public interface class IDesignerHost : IServiceProvider, System::ComponentModel::Design::IServiceContainer
public interface class IDesignerHost : System::ComponentModel::Design::IServiceContainer
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
public interface IDesignerHost : System.ComponentModel.Design.IServiceContainer
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer, IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer
- Turunan
- Atribut
- Penerapan
Contoh
Contoh kode berikut menunjukkan cara mendapatkan IDesignerHost antarmuka layanan dari perancang atau komponen situs.
// Requests an IDesignerHost service from the design time environment using Component.Site.GetService()
IDesignerHost^ dh = static_cast<IDesignerHost^>(this->Component->Site->GetService( IDesignerHost::typeid ));
// Requests an IDesignerHost service from the design time environment using Component.Site.GetService()
IDesignerHost dh = (IDesignerHost) this.Component.Site.GetService(typeof(IDesignerHost));
' Requests an IDesignerHost service from the design time environment using Component.Site.GetService()
Dim host As IDesignerHost = CType(Me.Component.Site.GetService(GetType(IDesignerHost)), IDesignerHost)
Contoh kode berikut menunjukkan penggunaan antarmuka untuk mencantumkan IDesignerHost komponen proyek.
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
// Provides a form containing a listbox that can display
// a list of project components.
public ref class DesignerHostListForm: public System::Windows::Forms::Form
{
public:
System::Windows::Forms::ListBox^ listBox1;
private:
System::Windows::Forms::Button^ ok_button;
public:
DesignerHostListForm()
{
this->Name = "DesignerHostListForm";
this->Text = "List of design-time project components";
this->SuspendLayout();
this->listBox1 = gcnew System::Windows::Forms::ListBox;
this->listBox1->Location = System::Drawing::Point( 8, 8 );
this->listBox1->Name = "listBox1";
this->listBox1->Size = System::Drawing::Size( 385, 238 );
this->listBox1->TabIndex = 0;
this->listBox1->Anchor = static_cast<AnchorStyles>(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) | System::Windows::Forms::AnchorStyles::Left) | System::Windows::Forms::AnchorStyles::Right);
this->ok_button = gcnew System::Windows::Forms::Button;
this->ok_button->DialogResult = System::Windows::Forms::DialogResult::OK;
this->ok_button->Location = System::Drawing::Point( 232, 256 );
this->ok_button->Name = "ok_button";
this->ok_button->TabIndex = 1;
this->ok_button->Text = "OK";
this->ok_button->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right);
this->ClientSize = System::Drawing::Size( 400, 285 );
array<System::Windows::Forms::Control^>^temp2 = {this->ok_button,this->listBox1};
this->Controls->AddRange( temp2 );
this->ResumeLayout( false );
}
public:
~DesignerHostListForm()
{
}
};
// You can double-click the component of an IDesignerHostExampleDesigner
// to show a form containing a listbox that lists the name and type
// of each component or control in the current design-time project.
public ref class IDesignerHostExampleDesigner: public IDesigner
{
private:
System::ComponentModel::IComponent^ component;
public:
IDesignerHostExampleDesigner(){}
virtual void DoDefaultAction()
{
ListComponents();
}
virtual void Initialize( System::ComponentModel::IComponent^ component )
{
this->component = component;
MessageBox::Show( "Double-click the IDesignerHostExample component to view a list of project components." );
}
private:
// Displays a list of components in the current design
// document when the default action of the designer is invoked.
void ListComponents()
{
DesignerHostListForm^ listform = gcnew DesignerHostListForm;
// Obtain an IDesignerHost service from the design environment.
IDesignerHost^ host = dynamic_cast<IDesignerHost^>(this->component->Site->GetService( IDesignerHost::typeid ));
// Get the project components container (control containment depends on Controls collections)
IContainer^ container = host->Container;
// Add each component's type name and name to the list box.
System::Collections::IEnumerator^ myEnum = container->Components->GetEnumerator();
while ( myEnum->MoveNext() )
{
IComponent^ component = safe_cast<IComponent^>(myEnum->Current);
listform->listBox1->Items->Add( String::Concat( component->GetType()->Name, " : ", component->Site->Name ) );
}
listform->ShowDialog();
}
public:
property System::ComponentModel::IComponent^ Component
{
virtual System::ComponentModel::IComponent^ get()
{
return this->component;
}
}
property System::ComponentModel::Design::DesignerVerbCollection^ Verbs
{
[PermissionSetAttribute(SecurityAction::Demand, Name="FullTrust")]
virtual System::ComponentModel::Design::DesignerVerbCollection^ get()
{
DesignerVerbCollection^ dvc = gcnew DesignerVerbCollection;
dvc->Add( gcnew DesignerVerb( "List Components",gcnew EventHandler( this, &IDesignerHostExampleDesigner::ListHandler ) ) );
return dvc;
}
}
private:
void ListHandler( Object^ /*sender*/, EventArgs^ /*e*/ )
{
ListComponents();
}
public:
~IDesignerHostExampleDesigner(){}
};
// IDesignerHostExampleComponent is a component associated
// with the IDesignerHostExampleDesigner that demonstrates
// acquisition and use of the IDesignerHost service
// to list project components.
[DesignerAttribute(IDesignerHostExampleDesigner::typeid)]
public ref class IDesignerHostExampleComponent: public System::ComponentModel::Component
{
public:
IDesignerHostExampleComponent(){}
public:
~IDesignerHostExampleComponent(){}
};
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
namespace IDesignerHostExample
{
// IDesignerHostExampleComponent is a component associated
// with the IDesignerHostExampleDesigner that demonstrates
// acquisition and use of the IDesignerHost service
// to list project components.
[DesignerAttribute(typeof(IDesignerHostExampleDesigner))]
public class IDesignerHostExampleComponent : System.ComponentModel.Component
{
public IDesignerHostExampleComponent()
{}
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
}
// You can double-click the component of an IDesignerHostExampleDesigner
// to show a form containing a listbox that lists the name and type
// of each component or control in the current design-time project.
public class IDesignerHostExampleDesigner : IDesigner
{
private System.ComponentModel.IComponent component;
public IDesignerHostExampleDesigner()
{}
public void DoDefaultAction()
{
ListComponents();
}
public void Initialize(System.ComponentModel.IComponent component)
{
this.component = component;
MessageBox.Show("Double-click the IDesignerHostExample component to view a list of project components.");
}
// Displays a list of components in the current design
// document when the default action of the designer is invoked.
private void ListComponents()
{
using (DesignerHostListForm listform = new DesignerHostListForm())
{
// Obtain an IDesignerHost service from the design environment.
IDesignerHost host = (IDesignerHost)this.component.Site.GetService(typeof(IDesignerHost));
// Get the project components container (control containment depends on Controls collections)
IContainer container = host.Container;
// Add each component's type name and name to the list box.
foreach (IComponent component in container.Components)
{
listform.listBox1.Items.Add(component.GetType().Name + " : " + component.Site.Name);
}
// Display the form.
listform.ShowDialog();
}
}
public System.ComponentModel.IComponent Component
{
get
{
return this.component;
}
}
public System.ComponentModel.Design.DesignerVerbCollection Verbs
{
get
{
DesignerVerbCollection dvc = new DesignerVerbCollection();
dvc.Add( new DesignerVerb("List Components", new EventHandler(ListHandler)) );
return dvc;
}
}
private void ListHandler(object sender, EventArgs e)
{
ListComponents();
}
public void Dispose() { }
}
// Provides a form containing a listbox that can display
// a list of project components.
public class DesignerHostListForm : System.Windows.Forms.Form
{
public System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button ok_button;
public DesignerHostListForm()
{
this.Name = "DesignerHostListForm";
this.Text = "List of design-time project components";
this.SuspendLayout();
this.listBox1 = new System.Windows.Forms.ListBox();
this.listBox1.Location = new System.Drawing.Point(8, 8);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(385, 238);
this.listBox1.TabIndex = 0;
this.listBox1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.ok_button = new System.Windows.Forms.Button();
this.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK;
this.ok_button.Location = new System.Drawing.Point(232, 256);
this.ok_button.Name = "ok_button";
this.ok_button.TabIndex = 1;
this.ok_button.Text = "OK";
this.ok_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
this.ClientSize = new System.Drawing.Size(400, 285);
this.Controls.AddRange(new System.Windows.Forms.Control[] { this.ok_button, this.listBox1 });
this.ResumeLayout(false);
}
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
}
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms
Namespace IDesignerHostExample
' IDesignerHostExampleComponent is a component associated
' with the IDesignerHostExampleDesigner that demonstrates
' acquisition and use of the IDesignerHost service
' to list project components.
<DesignerAttribute(GetType(IDesignerHostExampleDesigner))> _
Public Class IDesignerHostExampleComponent
Inherits System.ComponentModel.Component
Public Sub New()
End Sub
Protected Overloads Sub Dispose(ByVal disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
End Class
' You can double-click the component of a IDesignerHostExampleDesigner
' to show a form containing a listbox that lists the name and type
' of each component or control in the current design-time project.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class IDesignerHostExampleDesigner
Implements IDesigner
Private component_ As System.ComponentModel.IComponent
Public Sub New()
End Sub
Public Sub DoDefaultAction() Implements IDesigner.DoDefaultAction
ListComponents()
End Sub
Public Sub Initialize(ByVal component As System.ComponentModel.IComponent) Implements IDesigner.Initialize
Me.component_ = component
MessageBox.Show("Double-click the IDesignerHostExample component to view a list of project components.")
End Sub
' Displays a list of components in the current design
' document when the default action of the designer is invoked.
Private Sub ListComponents()
Using listform As New DesignerHostListForm()
' Obtain an IDesignerHost service from the design environment.
Dim host As IDesignerHost = CType(Me.Component.Site.GetService(GetType(IDesignerHost)), IDesignerHost)
' Get the project components container (control containment depends on Controls collections)
Dim container As IContainer = host.Container
' Add each component's type name and name to the list box.
Dim comp As Component
For Each comp In container.Components
listform.listBox1.Items.Add((comp.GetType().Name + " : " + Component.Site.Name))
Next comp
' Display the form.
listform.ShowDialog()
End Using
End Sub
Public ReadOnly Property Component() As System.ComponentModel.IComponent Implements IDesigner.Component
Get
Return component_
End Get
End Property
Public ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Implements IDesigner.Verbs
Get
Dim dvc As New DesignerVerbCollection()
dvc.Add(New DesignerVerb("List Components", New EventHandler(AddressOf ListHandler)))
Return dvc
End Get
End Property
Private Sub ListHandler(ByVal sender As Object, ByVal e As EventArgs)
ListComponents()
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
End Sub
End Class
_
' Provides a form containing a list box that can display
' a list of project components.
Public Class DesignerHostListForm
Inherits System.Windows.Forms.Form
Public listBox1 As System.Windows.Forms.ListBox
Private ok_button As System.Windows.Forms.Button
Public Sub New()
Me.Name = "DesignerHostListForm"
Me.Text = "List of design-time project components"
Me.SuspendLayout()
Me.listBox1 = New System.Windows.Forms.ListBox()
Me.listBox1.Location = New System.Drawing.Point(8, 8)
Me.listBox1.Name = "listBox1"
Me.listBox1.Size = New System.Drawing.Size(385, 238)
Me.listBox1.TabIndex = 0
Me.listBox1.Anchor = (((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) Or System.Windows.Forms.AnchorStyles.Right)
Me.ok_button = New System.Windows.Forms.Button()
Me.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK
Me.ok_button.Location = New System.Drawing.Point(232, 256)
Me.ok_button.Name = "ok_button"
Me.ok_button.TabIndex = 1
Me.ok_button.Text = "OK"
Me.ok_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right)
Me.ClientSize = New System.Drawing.Size(400, 285)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ok_button, Me.listBox1})
Me.ResumeLayout(False)
End Sub
Protected Overloads Sub Dispose(ByVal disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
End Class
End Namespace
Keterangan
IDesignerHostadalah antarmuka yang bekerja dengan arsitektur desainer formulir .NET Framework untuk memberikan dukungan untuk transaksi perancang dan manajemen komponen.
.NET Framework tidak menyediakan implementasi antarmuka ini. Antarmuka diimplementasikan oleh alat pengembangan yang mendukung perancang.
Catatan Bagi Pemanggil
Untuk mendapatkan implementasi IDesignerHost dari lingkungan pengembangan, panggil GetService(Type) saat komponen Anda aktif dalam mode desain, meneruskan jenis IDesignerHost untuk meminta IDesignerHost antarmuka layanan.
IDesignerHost menyediakan anggota berikut yang terkait dengan status perancang:
Properti Loading menunjukkan apakah perancang atau dokumen sedang dimuat.
Peristiwa Activated terjadi ketika perancang diaktifkan sebelum ditampilkan.
Peristiwa terjadi Deactivated ketika perancang dinonaktifkan.
Peristiwa LoadComplete terjadi setelah dokumen dimuat.
Metode ini Activate() mengaktifkan perancang.
IDesignerHost menyediakan anggota berikut yang terkait dengan pengelolaan komponen:
Properti Container menunjukkan kontainer untuk host perancang.
Properti RootComponent menunjukkan kelas dasar untuk komponen akar.
Properti RootComponentClassName menunjukkan nama kelas komponen akar.
Metode ini CreateComponent(Type) membuat jenis komponen yang ditentukan.
Metode ini DestroyComponent(IComponent) menghancurkan komponen yang ditentukan.
Metode ini GetDesigner(IComponent) mendapatkan perancang yang terkait dengan komponen tertentu.
Metode GetType(String) ini mendapatkan instans jenis dengan nama yang ditentukan.
IDesignerHost menyediakan anggota berikut yang terkait dengan pengelolaan transaksi:
Properti InTransaction menunjukkan apakah perancang berada dalam transaksi.
Properti TransactionDescription menunjukkan deskripsi transaksi saat ini.
Peristiwa TransactionClosed terjadi ketika transaksi telah selesai.
Peristiwa terjadi TransactionClosing ketika transaksi akan selesai.
Peristiwa TransactionOpened terjadi ketika transaksi telah dimulai.
Peristiwa terjadi TransactionOpening ketika transaksi akan dimulai.
Metode ini CreateTransaction() membuat dan mengembalikan transaksi baru.
Properti
Container |
Mendapatkan kontainer untuk host perancang ini. |
InTransaction |
Mendapatkan nilai yang menunjukkan apakah host perancang saat ini sedang dalam transaksi. |
Loading |
Mendapatkan nilai yang menunjukkan apakah host perancang saat ini memuat dokumen. |
RootComponent |
Mendapatkan instans kelas dasar yang digunakan sebagai komponen akar untuk desain saat ini. |
RootComponentClassName |
Mendapatkan nama kelas yang sepenuhnya memenuhi syarat yang sedang dirancang. |
TransactionDescription |
Mendapatkan deskripsi transaksi saat ini. |
Metode
Activate() |
Mengaktifkan perancang yang dihosting host ini. |
AddService(Type, Object) |
Menambahkan layanan yang ditentukan ke kontainer layanan. (Diperoleh dari IServiceContainer) |
AddService(Type, Object, Boolean) |
Menambahkan layanan yang ditentukan ke kontainer layanan, dan secara opsional mempromosikan layanan ke kontainer layanan induk apa pun. (Diperoleh dari IServiceContainer) |
AddService(Type, ServiceCreatorCallback) |
Menambahkan layanan yang ditentukan ke kontainer layanan. (Diperoleh dari IServiceContainer) |
AddService(Type, ServiceCreatorCallback, Boolean) |
Menambahkan layanan yang ditentukan ke kontainer layanan, dan secara opsional mempromosikan layanan ke kontainer layanan induk. (Diperoleh dari IServiceContainer) |
CreateComponent(Type) |
Membuat komponen dari jenis yang ditentukan dan menambahkannya ke dokumen desain. |
CreateComponent(Type, String) |
Membuat komponen dari jenis dan nama yang ditentukan, dan menambahkannya ke dokumen desain. |
CreateTransaction() |
DesignerTransaction Membuat yang dapat merangkum urutan peristiwa untuk meningkatkan performa dan mengaktifkan fungsionalitas dukungan urungkan dan ulangi. |
CreateTransaction(String) |
DesignerTransaction Membuat yang dapat merangkum urutan peristiwa untuk meningkatkan performa dan mengaktifkan fungsionalitas dukungan batalkan dan ulangi, menggunakan deskripsi transaksi yang ditentukan. |
DestroyComponent(IComponent) |
Menghancurkan komponen yang ditentukan dan menghapusnya dari kontainer perancang. |
GetDesigner(IComponent) |
Mendapatkan instans perancang yang berisi komponen yang ditentukan. |
GetService(Type) |
Mendapatkan objek layanan dari jenis yang ditentukan. (Diperoleh dari IServiceProvider) |
GetType(String) |
Mendapatkan instans nama jenis yang ditentukan dan sepenuhnya memenuhi syarat. |
RemoveService(Type) |
Menghapus jenis layanan yang ditentukan dari kontainer layanan. (Diperoleh dari IServiceContainer) |
RemoveService(Type, Boolean) |
Menghapus jenis layanan yang ditentukan dari kontainer layanan, dan secara opsional mempromosikan layanan ke kontainer layanan induk. (Diperoleh dari IServiceContainer) |
Acara
Activated |
Terjadi ketika perancang ini diaktifkan. |
Deactivated |
Terjadi ketika perancang ini dinonaktifkan. |
LoadComplete |
Terjadi ketika perancang ini selesai memuat dokumennya. |
TransactionClosed |
Menambahkan penanganan aktivitas untuk peristiwa tersebut TransactionClosed . |
TransactionClosing |
Menambahkan penanganan aktivitas untuk peristiwa tersebut TransactionClosing . |
TransactionOpened |
Menambahkan penanganan aktivitas untuk peristiwa tersebut TransactionOpened . |
TransactionOpening |
Menambahkan penanganan aktivitas untuk peristiwa tersebut TransactionOpening . |