IDesignerHost Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tillhandahåller ett gränssnitt för hantering av designertransaktioner och komponenter.
public interface class IDesignerHost : IServiceProvider, System::ComponentModel::Design::IServiceContainer
public interface class IDesignerHost : System::ComponentModel::Design::IServiceContainer
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
public interface IDesignerHost : System.ComponentModel.Design.IServiceContainer
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer, IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer
- Härledda
- Attribut
- Implementeringar
Exempel
Följande exempelkod visar hur du hämtar IDesignerHost tjänstgränssnittet från en designer eller en platskomponent.
// 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)
Följande exempelkod visar hur du använder IDesignerHost gränssnittet för att lista projektkomponenter.
#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
Kommentarer
IDesignerHost är ett gränssnitt som fungerar med .NET Framework-formulärdesignerarkitektur för att ge stöd för hantering av designertransaktioner och komponenter.
.NET Framework tillhandahåller inte någon implementering av det här gränssnittet. Gränssnittet implementeras av utvecklingsverktyg som stöder designers.
Anteckningar till anropare
Om du vill få en implementering av IDesignerHost från en utvecklingsmiljö anropar GetService(Type) du medan komponenten är aktiv i designläge och skickar typen av IDesignerHost för att begära ett IDesignerHost tjänstgränssnitt.
IDesignerHost innehåller följande medlemmar som är relaterade till designertillståndet:
Egenskapen Loading anger om en designer eller ett dokument läses in.
Händelsen Activated inträffar när en designer aktiveras innan den visas.
Händelsen Deactivated inträffar när en designer inaktiveras.
Händelsen LoadComplete inträffar när ett dokument har lästs in.
Metoden Activate() aktiverar designern.
IDesignerHost innehåller följande medlemmar som rör hantering av komponenter:
Egenskapen Container anger containern för designervärden.
Egenskapen RootComponent anger basklassen för rotkomponenten.
Egenskapen RootComponentClassName anger namnet på klassen för rotkomponenten.
Metoden CreateComponent(Type) skapar den angivna komponenttypen.
Metoden DestroyComponent(IComponent) förstör den angivna komponenten.
Metoden GetDesigner(IComponent) hämtar designern som är associerad med en angiven komponent.
Metoden GetType(String) hämtar en instans av typen med det angivna namnet.
IDesignerHost tillhandahåller följande medlemmar som rör hantering av transaktioner:
Egenskapen InTransaction anger om designern är i en transaktion.
Egenskapen TransactionDescription anger den aktuella transaktionsbeskrivningen.
Händelsen TransactionClosed inträffar när en transaktion har slutförts.
Händelsen TransactionClosing inträffar när en transaktion är på väg att slutföras.
Händelsen TransactionOpened inträffar när en transaktion har påbörjats.
Händelsen TransactionOpening inträffar när en transaktion är på väg att börja.
Metoden CreateTransaction() skapar och returnerar en ny transaktion.
Egenskaper
| Name | Description |
|---|---|
| Container |
Hämtar containern för den här designervärden. |
| InTransaction |
Hämtar ett värde som anger om designervärden för närvarande är i en transaktion. |
| Loading |
Hämtar ett värde som anger om designervärden för närvarande läser in dokumentet. |
| RootComponent |
Hämtar instansen av basklassen som används som rotkomponent för den aktuella designen. |
| RootComponentClassName |
Hämtar det fullständigt kvalificerade namnet på klassen som utformas. |
| TransactionDescription |
Hämtar beskrivningen av den aktuella transaktionen. |
Metoder
| Name | Description |
|---|---|
| Activate() |
Aktiverar designern som den här värden är värd för. |
| AddService(Type, Object, Boolean) |
Lägger till den angivna tjänsten i tjänstcontainern och höjer eventuellt upp tjänsten till alla överordnade tjänstcontainrar. (Ärvd från IServiceContainer) |
| AddService(Type, Object) |
Lägger till den angivna tjänsten i tjänstcontainern. (Ärvd från IServiceContainer) |
| AddService(Type, ServiceCreatorCallback, Boolean) |
Lägger till den angivna tjänsten i tjänstcontainern och höjer eventuellt upp tjänsten till överordnade tjänstcontainrar. (Ärvd från IServiceContainer) |
| AddService(Type, ServiceCreatorCallback) |
Lägger till den angivna tjänsten i tjänstcontainern. (Ärvd från IServiceContainer) |
| CreateComponent(Type, String) |
Skapar en komponent av den angivna typen och namnet och lägger till den i designdokumentet. |
| CreateComponent(Type) |
Skapar en komponent av den angivna typen och lägger till den i designdokumentet. |
| CreateTransaction() |
Skapar en DesignerTransaction som kan kapsla in händelsesekvenser för att förbättra prestanda och aktivera ångra och göra om supportfunktioner. |
| CreateTransaction(String) |
Skapar en DesignerTransaction som kan kapsla in händelsesekvenser för att förbättra prestanda och aktivera ångra och göra om supportfunktioner med hjälp av den angivna transaktionsbeskrivningen. |
| DestroyComponent(IComponent) |
Förstör den angivna komponenten och tar bort den från designercontainern. |
| GetDesigner(IComponent) |
Hämtar designerinstansen som innehåller den angivna komponenten. |
| GetService(Type) |
Hämtar tjänstobjektet av den angivna typen. (Ärvd från IServiceProvider) |
| GetType(String) |
Hämtar en instans av det angivna fullständigt kvalificerade typnamnet. |
| RemoveService(Type, Boolean) |
Tar bort den angivna tjänsttypen från tjänstcontainern och höjer eventuellt upp tjänsten till överordnade tjänstcontainrar. (Ärvd från IServiceContainer) |
| RemoveService(Type) |
Tar bort den angivna tjänsttypen från tjänstcontainern. (Ärvd från IServiceContainer) |
Händelser
| Name | Description |
|---|---|
| Activated |
Inträffar när den här designern är aktiverad. |
| Deactivated |
Inträffar när designern inaktiveras. |
| LoadComplete |
Inträffar när designern har läst in dokumentet. |
| TransactionClosed |
Lägger till en händelsehanterare för TransactionClosed händelsen. |
| TransactionClosing |
Lägger till en händelsehanterare för TransactionClosing händelsen. |
| TransactionOpened |
Lägger till en händelsehanterare för TransactionOpened händelsen. |
| TransactionOpening |
Lägger till en händelsehanterare för TransactionOpening händelsen. |