Leer en inglés

Compartir a través de


IDesignerHost Interfaz

Definición

Proporciona una interfaz para administrar transacciones y componentes de diseñador.

C#
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
C#
public interface IDesignerHost : System.ComponentModel.Design.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.

C#
// Requests an IDesignerHost service from the design time environment using Component.Site.GetService()
IDesignerHost dh = (IDesignerHost) this.Component.Site.GetService(typeof(IDesignerHost));

En el código de ejemplo siguiente se muestra cómo usar la IDesignerHost interfaz para enumerar los componentes del proyecto.

C#
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 );
        }	
    }
}

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:

IDesignerHost proporciona los siguientes miembros relacionados con la administración de transacciones:

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 T de .IServiceProvider

GetKeyedServices(IServiceProvider, Type, Object)

Obtiene una enumeración de servicios de tipo serviceType de .IServiceProvider

GetKeyedServices<T>(IServiceProvider, Object)

Obtiene una enumeración de servicios de tipo T de .IServiceProvider

GetRequiredKeyedService(IServiceProvider, Type, Object)

Obtiene un servicio de tipo serviceType de .IServiceProvider

GetRequiredKeyedService<T>(IServiceProvider, Object)

Obtiene un servicio de tipo T de .IServiceProvider

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 serviceType de IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Obtiene el servicio de tipo T de IServiceProvider.

GetService<T>(IServiceProvider)

Obtiene el servicio de tipo T de IServiceProvider.

GetServices(IServiceProvider, Type)

Obtiene una enumeración de los servicios de tipo serviceType de IServiceProvider.

GetServices<T>(IServiceProvider)

Obtiene una enumeración de los servicios de tipo T de IServiceProvider.

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.

Se aplica a

Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también