IDesignerHost Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Tasarımcı işlemlerini ve bileşenlerini yönetmek için bir arabirim sağlar.
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
- Türetilmiş
- Öznitelikler
- Uygulamalar
Örnekler
Aşağıdaki örnek kod, hizmet arabiriminin IDesignerHost bir tasarımcıdan veya sitedeki bileşenden nasıl alınduğunu gösterir.
// 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)
Aşağıdaki örnek kod, proje bileşenlerini listelemek için arabirimini IDesignerHost kullanmayı gösterir.
#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
Açıklamalar
IDesignerHost, tasarımcı işlemi ve bileşen yönetimi için destek sağlamak üzere .NET Framework form tasarımcısı mimarisiyle çalışan bir arabirimdir.
.NET Framework bu arabirimin bir uygulamasını sağlamaz. Arabirim, tasarımcıları destekleyen geliştirme araçları tarafından uygulanır.
Arayanlara Notlar
Bir geliştirme ortamından IDesignerHost uygulamasını almak için, bileşeniniz tasarım modunda etkinken öğesini çağırın GetService(Type) ve türünü geçirerek IDesignerHost bir IDesignerHost hizmet arabirimi isteyin.
IDesignerHost tasarımcı durumuyla ilgili olarak aşağıdaki üyeleri sağlar:
Loading özelliği, bir tasarımcının veya belgenin yüklenip yüklenmediğini gösterir.
Olay, Activated bir tasarımcı görüntülenmeden önce etkinleştirildiğinde gerçekleşir.
Olay Deactivated , bir tasarımcı devre dışı bırakıldığında gerçekleşir.
Olay LoadComplete , bir belge yüklendikten sonra gerçekleşir.
Activate() yöntemi tasarımcıyı etkinleştirir.
IDesignerHost , bileşenleri yönetmeyle ilgili olarak aşağıdaki üyeleri sağlar:
Container özelliği, tasarımcı konağı için kapsayıcıyı gösterir.
RootComponent özelliği, kök bileşenin temel sınıfını gösterir.
RootComponentClassName özelliği, kök bileşenin sınıfının adını gösterir.
yöntemi, CreateComponent(Type) belirtilen bileşen türünü oluşturur.
yöntemi belirtilen DestroyComponent(IComponent) bileşeni yok eder.
yöntemi, GetDesigner(IComponent) belirtilen bir bileşenle ilişkili tasarımcıyı alır.
yöntemi, GetType(String) belirtilen ada sahip türün bir örneğini alır.
IDesignerHost , işlemleri yönetmeyle ilgili olarak aşağıdaki üyeleri sağlar:
InTransaction özelliği, tasarımcının bir işlemde olup olmadığını gösterir.
TransactionDescription özelliği geçerli işlem açıklamasını gösterir.
Olay, TransactionClosed bir işlem tamamlandığında gerçekleşir.
Olay, TransactionClosing bir işlem tamamlanmak üzere olduğunda gerçekleşir.
Olay, TransactionOpened bir işlem başladığında gerçekleşir.
Olay, TransactionOpening bir işlem başlamak üzere olduğunda gerçekleşir.
CreateTransaction() yöntemi yeni bir işlem oluşturur ve döndürür.
Özellikler
Container |
Bu tasarımcı konağı için kapsayıcıyı alır. |
InTransaction |
Tasarımcı konağın şu anda bir işlemde olup olmadığını belirten bir değer alır. |
Loading |
Tasarımcı konağın şu anda belgeyi yükleyip yüklemediğini belirten bir değer alır. |
RootComponent |
Geçerli tasarım için kök bileşen olarak kullanılan temel sınıfın örneğini alır. |
RootComponentClassName |
Tasarlanan sınıfın tam adını alır. |
TransactionDescription |
Geçerli hareketin açıklamasını alır. |
Yöntemler
Activate() |
Bu konağın barındırdığını tasarımcıyı etkinleştirir. |
AddService(Type, Object) |
Belirtilen hizmeti hizmet kapsayıcısına ekler. (Devralındığı yer: IServiceContainer) |
AddService(Type, Object, Boolean) |
Belirtilen hizmeti hizmet kapsayıcısına ekler ve isteğe bağlı olarak hizmeti herhangi bir üst hizmet kapsayıcısına yükseltir. (Devralındığı yer: IServiceContainer) |
AddService(Type, ServiceCreatorCallback) |
Belirtilen hizmeti hizmet kapsayıcısına ekler. (Devralındığı yer: IServiceContainer) |
AddService(Type, ServiceCreatorCallback, Boolean) |
Belirtilen hizmeti hizmet kapsayıcısına ekler ve isteğe bağlı olarak hizmeti üst hizmet kapsayıcılarına yükseltir. (Devralındığı yer: IServiceContainer) |
CreateComponent(Type) |
Belirtilen türde bir bileşen oluşturur ve bunu tasarım belgesine ekler. |
CreateComponent(Type, String) |
Belirtilen türde ve adda bir bileşen oluşturur ve bunu tasarım belgesine ekler. |
CreateTransaction() |
Performansı geliştirmek ve geri alma ve yineleme desteği işlevselliğini etkinleştirmek için olay dizilerini kapsülleyebilecek bir DesignerTransaction oluşturur. |
CreateTransaction(String) |
Belirtilen işlem açıklamasını kullanarak performansı geliştirmek ve geri alma ve yineleme desteği işlevselliğini etkinleştirmek için olay dizilerini kapsülleyebilecek bir DesignerTransaction oluşturur. |
DestroyComponent(IComponent) |
Belirtilen bileşeni yok eder ve tasarımcı kapsayıcısından kaldırır. |
GetDesigner(IComponent) |
Belirtilen bileşeni içeren tasarımcı örneğini alır. |
GetService(Type) |
Belirtilen türe ait hizmet nesnesini alır. (Devralındığı yer: IServiceProvider) |
GetType(String) |
Belirtilen tam tür adının bir örneğini alır. |
RemoveService(Type) |
Belirtilen hizmet türünü hizmet kapsayıcısından kaldırır. (Devralındığı yer: IServiceContainer) |
RemoveService(Type, Boolean) |
Belirtilen hizmet türünü hizmet kapsayıcısından kaldırır ve isteğe bağlı olarak hizmeti üst hizmet kapsayıcılarına yükseltir. (Devralındığı yer: IServiceContainer) |
Ekinlikler
Activated |
Bu tasarımcı etkinleştirildiğinde gerçekleşir. |
Deactivated |
Bu tasarımcı devre dışı bırakıldığında gerçekleşir. |
LoadComplete |
Bu tasarımcı belgesini yüklemeyi tamamladığında gerçekleşir. |
TransactionClosed |
Olay için bir olay işleyicisi TransactionClosed ekler. |
TransactionClosing |
Olay için bir olay işleyicisi TransactionClosing ekler. |
TransactionOpened |
Olay için bir olay işleyicisi TransactionOpened ekler. |
TransactionOpening |
Olay için bir olay işleyicisi TransactionOpening ekler. |