Ler em inglês

Compartilhar via


IDesignerHost Interface

Definição

Fornece uma interface para gerenciar componentes e transações de designer.

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
Derivado
Atributos
Implementações

Exemplos

O código de exemplo a seguir demonstra como obter a IDesignerHost interface de serviço de um designer ou componente site.

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

O código de exemplo a seguir demonstra o uso da IDesignerHost interface para listar componentes do projeto.

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

Comentários

IDesignerHosté uma interface que funciona com a arquitetura do designer de formulários .NET Framework para fornecer suporte para o gerenciamento de transações e componentes do designer.

O .NET Framework não fornece uma implementação dessa interface. A interface é implementada por ferramentas de desenvolvimento que dão suporte a designers.

Notas aos Chamadores

Para obter uma implementação de de IDesignerHost um ambiente de desenvolvimento, chame GetService(Type) enquanto o componente estiver ativo no modo de design, passando o tipo de para solicitar uma IDesignerHost interface de IDesignerHost serviço.

IDesignerHost fornece os seguintes membros relacionados ao estado do designer:

  • A Loading propriedade indica se um designer ou documento está sendo carregado.

  • O Activated evento ocorre quando um designer é ativado antes da exibição.

  • O Deactivated evento ocorre quando um designer é desativado.

  • O LoadComplete evento ocorre depois que um documento é carregado.

  • O Activate() método ativa o designer.

IDesignerHost fornece os seguintes membros relacionados ao gerenciamento de componentes:

IDesignerHost fornece os seguintes membros relacionados ao gerenciamento de transações:

Propriedades

Container

Obtém o contêiner para este host de designer.

InTransaction

Obtém um valor que indica se o host do designer está atualmente em uma transação.

Loading

Obtém um valor que indica se o host de designer está carregando o documento no momento.

RootComponent

Obtém a instância da classe base usada como o componente raiz para o design atual.

RootComponentClassName

Obtém o nome totalmente qualificado da classe que está sendo criada.

TransactionDescription

Obtém a descrição da transação atual.

Métodos

Activate()

Ativa o designer que este host está hospedando.

AddService(Type, Object)

Adiciona o serviço especificado ao contêiner de serviço.

(Herdado de IServiceContainer)
AddService(Type, Object, Boolean)

Adiciona o serviço especificado ao contêiner de serviço e, opcionalmente, promove o serviço para qualquer contêiner de serviço pai.

(Herdado de IServiceContainer)
AddService(Type, ServiceCreatorCallback)

Adiciona o serviço especificado ao contêiner de serviço.

(Herdado de IServiceContainer)
AddService(Type, ServiceCreatorCallback, Boolean)

Adiciona o serviço especificado ao contêiner de serviço e, opcionalmente, promove o serviço para contêineres de serviço pai.

(Herdado de IServiceContainer)
CreateComponent(Type)

Cria um componente do tipo especificado e o adiciona ao documento de design.

CreateComponent(Type, String)

Cria um componente do tipo e nome especificados e o adiciona ao documento de design.

CreateTransaction()

Cria um DesignerTransaction que pode encapsular sequências de eventos para melhorar o desempenho e habilitar desfazer e refazer a funcionalidade de suporte.

CreateTransaction(String)

Cria um DesignerTransaction que pode encapsular sequências de eventos para melhorar o desempenho e habilitar a funcionalidade de suporte de desfazer e refazer, usando a descrição da transação especificada.

DestroyComponent(IComponent)

Destrói o componente especificado e remove-o do contêiner de designer.

GetDesigner(IComponent)

Obtém a instância do designer que contém o componente especificado.

GetService(Type)

Obtém o objeto de serviço do tipo especificado.

(Herdado de IServiceProvider)
GetType(String)

Obtém uma instância do nome do tipo totalmente qualificado especificado.

RemoveService(Type)

Remove o tipo de serviço especificado do contêiner de serviço.

(Herdado de IServiceContainer)
RemoveService(Type, Boolean)

Remove o tipo de serviço especificado do contêiner de serviço e, opcionalmente, promove o serviço para contêineres de serviço pai.

(Herdado de IServiceContainer)

Eventos

Activated

Ocorre quando esse designer é ativado.

Deactivated

Ocorre quando esse designer é desativado.

LoadComplete

Ocorre quando este designer termina de carregar seu documento.

TransactionClosed

Adiciona um manipulador de eventos para o evento TransactionClosed.

TransactionClosing

Adiciona um manipulador de eventos para o evento TransactionClosing.

TransactionOpened

Adiciona um manipulador de eventos para o evento TransactionOpened.

TransactionOpening

Adiciona um manipulador de eventos para o evento TransactionOpening.

Métodos de Extensão

GetKeyedService<T>(IServiceProvider, Object)

Obtém um serviço do tipo T do IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Obtém uma enumeração de serviços do tipo serviceType do IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Obtém uma enumeração de serviços do tipo T do IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Obtém um serviço do tipo serviceType do IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Obtém um serviço do tipo T do IServiceProvider.

CreateAsyncScope(IServiceProvider)

Cria um novo AsyncServiceScope que pode ser usado para resolver serviços com escopo.

CreateScope(IServiceProvider)

Cria um novo IServiceScope que pode ser usado para resolver serviços com escopo.

GetRequiredService(IServiceProvider, Type)

Obter serviço do tipo serviceType do IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Obter serviço do tipo T do IServiceProvider.

GetService<T>(IServiceProvider)

Obter serviço do tipo T do IServiceProvider.

GetServices(IServiceProvider, Type)

Obtém uma enumeração de serviços do tipo serviceType do IServiceProvider.

GetServices<T>(IServiceProvider)

Obtém uma enumeração de serviços do tipo T do IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Obtém o objeto que coleta registros de log enviados ao agente falso.

GetFakeRedactionCollector(IServiceProvider)

Obtém a instância falsa do coletor de refatoração do contêiner de injeção de dependência.

Aplica-se a

Produto Versões
.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

Confira também