IDesignerHost Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Schnittstelle zum Verwalten von Designertransaktionen und Komponenten bereit.
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
- Abgeleitet
- Attribute
- Implementiert
Beispiele
Im folgenden Beispielcode wird veranschaulicht, wie Die IDesignerHost Dienstschnittstelle von einem Designer oder einer sited-Komponente abgerufen wird.
// 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)
Der folgende Beispielcode veranschaulicht die Verwendung der -Schnittstelle zum Auflisten von IDesignerHost Projektkomponenten.
#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
Hinweise
IDesignerHostist eine Schnittstelle, die mit der Architektur des .NET Framework Formular-Designers zusammenarbeitet, um die Verwaltung von Designertransaktionen und Komponenten zu unterstützen.
Die .NET Framework stellt keine Implementierung dieser Schnittstelle bereit. Die Schnittstelle wird von Entwicklungstools implementiert, die Designer unterstützen.
Hinweise für Aufrufer
Um eine Implementierung von IDesignerHost aus einer Entwicklungsumgebung zu erhalten, rufen Sie GetService(Type) auf, während Ihre Komponente im Entwurfsmodus aktiv ist, und übergeben Sie den Typ von, IDesignerHost um eine IDesignerHost Dienstschnittstelle anzufordern.
IDesignerHost stellt die folgenden Elemente im Zusammenhang mit dem Designerzustand bereit:
Die Loading -Eigenschaft gibt an, ob ein Designer oder Dokument geladen wird.
Das Activated Ereignis tritt auf, wenn ein Designer vor der Anzeige aktiviert wird.
Das Deactivated Ereignis tritt auf, wenn ein Designer deaktiviert wird.
Das LoadComplete Ereignis tritt auf, nachdem ein Dokument geladen wurde.
Die Activate() -Methode aktiviert den Designer.
IDesignerHost stellt die folgenden Member im Zusammenhang mit der Verwaltung von Komponenten bereit:
Die Container -Eigenschaft gibt den Container für den Designerhost an.
Die RootComponent -Eigenschaft gibt die Basisklasse für die Stammkomponente an.
Die RootComponentClassName -Eigenschaft gibt den Namen der -Klasse der Stammkomponente an.
Die CreateComponent(Type) -Methode erstellt den angegebenen Komponententyp.
Die DestroyComponent(IComponent) -Methode zerstört die angegebene Komponente.
Die GetDesigner(IComponent) -Methode ruft den Designer ab, der einer angegebenen Komponente zugeordnet ist.
Die GetType(String) -Methode ruft eine instance des Typs mit dem angegebenen Namen ab.
IDesignerHost stellt die folgenden Elemente im Zusammenhang mit der Verwaltung von Transaktionen bereit:
Die InTransaction -Eigenschaft gibt an, ob sich der Designer in einer Transaktion befindet.
Die TransactionDescription -Eigenschaft gibt die aktuelle Transaktionsbeschreibung an.
Das TransactionClosed Ereignis tritt auf, wenn eine Transaktion abgeschlossen wurde.
Das TransactionClosing Ereignis tritt auf, wenn eine Transaktion abgeschlossen werden soll.
Das TransactionOpened Ereignis tritt auf, wenn eine Transaktion begonnen hat.
Das TransactionOpening Ereignis tritt auf, wenn eine Transaktion gestartet wird.
Die CreateTransaction() -Methode erstellt und gibt eine neue Transaktion zurück.
Eigenschaften
Container |
Ruft den Container für diesen Designerhost ab. |
InTransaction |
Ruft einen Wert ab, der angibt, ob sich der Designerhost gegenwärtig in einer Transaktion befindet. |
Loading |
Ruft einen Wert ab, der angibt, ob der Designerhost gegenwärtig das Dokument lädt. |
RootComponent |
Ruft die Instanz der Basisklasse ab, die als Stammkomponente für den aktuellen Entwurf verwendet wird. |
RootComponentClassName |
Ruft den voll gekennzeichneten Namen der Klasse ab, die entworfen wird. |
TransactionDescription |
Ruft die Beschreibung der aktuellen Transaktion ab. |
Methoden
Activate() |
Aktiviert den Designer auf diesem Host. |
AddService(Type, Object) |
Fügt dem Dienstcontainer den angegebenen Dienst hinzu. (Geerbt von IServiceContainer) |
AddService(Type, Object, Boolean) |
Fügt dem Dienstcontainer den angegebenen Dienst hinzu und stuft den Dienst optional auf einen beliebigen übergeordneten Dienstcontainer hoch. (Geerbt von IServiceContainer) |
AddService(Type, ServiceCreatorCallback) |
Fügt dem Dienstcontainer den angegebenen Dienst hinzu. (Geerbt von IServiceContainer) |
AddService(Type, ServiceCreatorCallback, Boolean) |
Fügt dem Dienstcontainer den angegebenen Dienst hinzu und stuft den Dienst optional auf übergeordnete Dienstcontainer hoch. (Geerbt von IServiceContainer) |
CreateComponent(Type) |
Erstellt eine Komponente des angegebenen Typs und fügt diese dem Entwurfsdokument hinzu. |
CreateComponent(Type, String) |
Erstellt eine Komponente des angegebenen Typs und Namens und fügt diese dem Entwurfsdokument hinzu. |
CreateTransaction() |
Erstellt eine DesignerTransaction, die Ereignissequenzen kapseln kann, um dadurch die Leistung zu erhöhen und die Unterstützungsfunktionen von Aktionen zum Rückgängigmachen und Wiederherstellen zu aktivieren. |
CreateTransaction(String) |
Erstellt eine DesignerTransaction, die Ereignissequenzen unter Verwendung der angegebenen Transaktionsbeschreibung kapseln kann, um die Leistung zu erhöhen und um die Unterstützungsfunktionen für Aktionen zum Rückgängigmachen und Wiederherstellen zu aktivieren. |
DestroyComponent(IComponent) |
Zerstört die angegebene Komponente und entfernt sie aus dem Designercontainer. |
GetDesigner(IComponent) |
Ruft die Designerinstanz ab, die die angegebene Komponente enthält. |
GetService(Type) |
Ruft das Dienstobjekt des angegebenen Typs ab. (Geerbt von IServiceProvider) |
GetType(String) |
Ruft eine Instanz des angegebenen voll gekennzeichneten Typnamens ab. |
RemoveService(Type) |
Entfernt den angegebenen Diensttyp aus dem Dienstcontainer. (Geerbt von IServiceContainer) |
RemoveService(Type, Boolean) |
Entfernt den angegebenen Diensttyp aus dem Dienstcontainer und stuft den Dienst optional auf übergeordnete Dienstcontainer hoch. (Geerbt von IServiceContainer) |
Ereignisse
Activated |
Tritt beim Aktivieren dieses Designers ein. |
Deactivated |
Tritt beim Deaktivieren dieses Designers ein. |
LoadComplete |
Tritt ein, wenn dieser Designer sein Dokument lädt. |
TransactionClosed |
Fügt einen Ereignishandler für das TransactionClosed-Ereignis hinzu. |
TransactionClosing |
Fügt einen Ereignishandler für das TransactionClosing-Ereignis hinzu. |
TransactionOpened |
Fügt einen Ereignishandler für das TransactionOpened-Ereignis hinzu. |
TransactionOpening |
Fügt einen Ereignishandler für das TransactionOpening-Ereignis hinzu. |
Erweiterungsmethoden
GetKeyedService<T>(IServiceProvider, Object) |
Ruft einen Dienst vom Typ |
GetKeyedServices(IServiceProvider, Type, Object) |
Ruft eine Enumeration von Diensten vom Typ |
GetKeyedServices<T>(IServiceProvider, Object) |
Ruft eine Enumeration von Diensten vom Typ |
GetRequiredKeyedService(IServiceProvider, Type, Object) |
Ruft einen Dienst vom Typ |
GetRequiredKeyedService<T>(IServiceProvider, Object) |
Ruft einen Dienst vom Typ |
CreateAsyncScope(IServiceProvider) |
Erstellt eine neue AsyncServiceScope-Schnittstelle, die zum Auflösen von bereichsbezogenen Diensten verwendet werden kann. |
CreateScope(IServiceProvider) |
Erstellt eine neue IServiceScope-Schnittstelle, die zum Auflösen von bereichsbezogenen Diensten verwendet werden kann. |
GetRequiredService(IServiceProvider, Type) |
Ruft einen Dienst vom Typ |
GetRequiredService<T>(IServiceProvider) |
Ruft einen Dienst vom Typ |
GetService<T>(IServiceProvider) |
Ruft einen Dienst vom Typ |
GetServices(IServiceProvider, Type) |
Ruft eine Enumeration von Diensten vom Typ |
GetServices<T>(IServiceProvider) |
Ruft eine Enumeration von Diensten vom Typ |
GetFakeLogCollector(IServiceProvider) |
Ruft das -Objekt ab, das An die gefälschte Protokollierung gesendete Protokolldatensätze sammelt. |
GetFakeRedactionCollector(IServiceProvider) |
Ruft den gefälschten Redactorsammler instance aus dem Abhängigkeitsinjektionscontainer ab. |