IDesignerHost Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una interfaz para administrar transacciones y componentes de diseñador.
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
- Derivado
- Atributos
- Implementaciones
Ejemplos
En el código de ejemplo siguiente se muestra cómo obtener la IDesignerHost interfaz de servicio de un diseñador o un componente de sitio.
// 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)
En el código de ejemplo siguiente se muestra cómo usar la IDesignerHost interfaz para enumerar los componentes del proyecto.
#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
Comentarios
IDesignerHost es una interfaz que funciona con la arquitectura del diseñador de formularios de .NET Framework para proporcionar compatibilidad con la administración de componentes y transacciones del diseñador.
.NET Framework no proporciona una implementación de esta interfaz. La interfaz se implementa mediante herramientas de desarrollo que admiten diseñadores.
Notas a los autores de las llamadas
Para obtener una implementación de desde un entorno de IDesignerHost desarrollo, llame a GetService(Type) mientras el componente está activo en modo de diseño, pasando el tipo de IDesignerHost para solicitar una IDesignerHost interfaz de servicio.
IDesignerHost proporciona los siguientes miembros relacionados con el estado del diseñador:
La Loading propiedad indica si se está cargando un diseñador o documento.
El Activated evento se produce cuando se activa un diseñador antes de mostrarse.
El Deactivated evento se produce cuando se desactiva un diseñador.
El LoadComplete evento se produce después de cargar un documento.
El Activate() método activa el diseñador.
IDesignerHost proporciona los siguientes miembros relacionados con la administración de componentes:
La Container propiedad indica el contenedor para el host del diseñador.
La RootComponent propiedad indica la clase base para el componente raíz.
La RootComponentClassName propiedad indica el nombre de la clase del componente raíz.
El CreateComponent(Type) método crea el tipo de componente especificado.
El DestroyComponent(IComponent) método destruye el componente especificado.
El GetDesigner(IComponent) método obtiene el diseñador asociado a un componente especificado.
El GetType(String) método obtiene una instancia del tipo con el nombre especificado.
IDesignerHost proporciona los siguientes miembros relacionados con la administración de transacciones:
La InTransaction propiedad indica si el diseñador está en una transacción.
La TransactionDescription propiedad indica la descripción de la transacción actual.
El TransactionClosed evento se produce cuando se ha completado una transacción.
El TransactionClosing evento se produce cuando una transacción está a punto de completarse.
El TransactionOpened evento tiene lugar cuando se ha iniciado una transacción.
El TransactionOpening evento se produce cuando una transacción está a punto de comenzar.
El CreateTransaction() método crea y devuelve una nueva transacción.
Propiedades
Container |
Obtiene el contenedor para el host del diseñador. |
InTransaction |
Obtiene un valor que indica si el host del diseñador está ejecutando actualmente una transacción. |
Loading |
Obtiene un valor que indica si el host del diseñador está cargando el documento. |
RootComponent |
Obtiene la instancia de la clase base que se utiliza como componente raíz para el diseño actual. |
RootComponentClassName |
Obtiene el nombre completo de la clase que se está diseñando. |
TransactionDescription |
Obtiene una descripción de la transacción actual. |
Métodos
Activate() |
Activa el diseñador hospedado en este host. |
AddService(Type, Object) |
Agrega el servicio especificado al contenedor de servicios. (Heredado de IServiceContainer) |
AddService(Type, Object, Boolean) |
Agrega el servicio especificado al contenedor de servicios y, opcionalmente, promueve el servicio a cualquier contenedor de servicios primario. (Heredado de IServiceContainer) |
AddService(Type, ServiceCreatorCallback) |
Agrega el servicio especificado al contenedor de servicios. (Heredado de IServiceContainer) |
AddService(Type, ServiceCreatorCallback, Boolean) |
Agrega el servicio especificado al contenedor de servicios y, opcionalmente, promueve el servicio al contenedor de servicios primario. (Heredado de IServiceContainer) |
CreateComponent(Type) |
Crea un componente del tipo especificado y lo agrega al documento de diseño. |
CreateComponent(Type, String) |
Crea un componente del tipo y nombre especificados y lo agrega al documento de diseño. |
CreateTransaction() |
Crea una DesignerTransaction que puede encapsular secuencias de eventos para mejorar el rendimiento y habilitar funcionalidad para las operaciones de deshacer y rehacer. |
CreateTransaction(String) |
Crea una DesignerTransaction que puede encapsular secuencias de eventos para mejorar el rendimiento y habilitar funcionalidad para las operaciones de deshacer y rehacer, utilizando la descripción de transacción especificada. |
DestroyComponent(IComponent) |
Destruye el componente especificado y lo quita del contenedor del diseñador. |
GetDesigner(IComponent) |
Obtiene la instancia del diseñador que contiene el componente especificado. |
GetService(Type) |
Obtiene el objeto de servicio del tipo especificado. (Heredado de IServiceProvider) |
GetType(String) |
Obtiene una instancia del nombre de tipo completo especificado. |
RemoveService(Type) |
Quita el tipo de servicio especificado del contenedor de servicios. (Heredado de IServiceContainer) |
RemoveService(Type, Boolean) |
Quita el tipo de servicio especificado del contenedor de servicios y, opcionalmente, promueve el servicio al contenedor de servicios primario. (Heredado de IServiceContainer) |
Eventos
Activated |
Se produce cuando se activa el diseñador. |
Deactivated |
Se produce cuando se desactiva el diseñador. |
LoadComplete |
Se produce cuando el diseñador termina de cargar su documento. |
TransactionClosed |
Agrega un controlador de eventos para el evento TransactionClosed. |
TransactionClosing |
Agrega un controlador de eventos para el evento TransactionClosing. |
TransactionOpened |
Agrega un controlador de eventos para el evento TransactionOpened. |
TransactionOpening |
Agrega un controlador de eventos para el evento TransactionOpening. |
Métodos de extensión
GetKeyedService<T>(IServiceProvider, Object) |
Obtiene un servicio de tipo |
GetKeyedServices(IServiceProvider, Type, Object) |
Obtiene una enumeración de servicios de tipo |
GetKeyedServices<T>(IServiceProvider, Object) |
Obtiene una enumeración de servicios de tipo |
GetRequiredKeyedService(IServiceProvider, Type, Object) |
Obtiene un servicio de tipo |
GetRequiredKeyedService<T>(IServiceProvider, Object) |
Obtiene un servicio de tipo |
CreateAsyncScope(IServiceProvider) |
Crea una instancia de AsyncServiceScope que se puede usar para resolver los servicios con ámbito. |
CreateScope(IServiceProvider) |
Crea una instancia de IServiceScope que se puede usar para resolver los servicios con ámbito. |
GetRequiredService(IServiceProvider, Type) |
Obtiene el servicio de tipo |
GetRequiredService<T>(IServiceProvider) |
Obtiene el servicio de tipo |
GetService<T>(IServiceProvider) |
Obtiene el servicio de tipo |
GetServices(IServiceProvider, Type) |
Obtiene una enumeración de los servicios de tipo |
GetServices<T>(IServiceProvider) |
Obtiene una enumeración de los servicios de tipo |
GetFakeLogCollector(IServiceProvider) |
Obtiene el objeto que recopila los registros enviados al registrador falso. |
GetFakeRedactionCollector(IServiceProvider) |
Obtiene la instancia falsa del recopilador de redactores del contenedor de inserción de dependencias. |