Ағылшын тілінде оқу

Бөлісу құралы:


IDesignerHost Интерфейс

Определение

Предоставляет интерфейс для управления транзакциями и компонентами конструктора.

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
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как получить IDesignerHost интерфейс службы из конструктора или веб-компонента.

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

В следующем примере кода показано использование интерфейса для перечисления IDesignerHost компонентов проекта.

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

Комментарии

IDesignerHost— это интерфейс, который работает с архитектурой конструктора форм платформа .NET Framework для обеспечения поддержки управления транзакциями и компонентами конструктора.

Платформа .NET Framework не предоставляет реализацию этого интерфейса. Интерфейс реализуется средствами разработки, поддерживающими конструкторов.

Примечания для тех, кто вызывает этот метод

Чтобы получить реализацию из среды разработки IDesignerHost , вызовите GetService(Type) , пока компонент активен в режиме разработки IDesignerHost , передав тип , чтобы запросить IDesignerHost интерфейс службы.

IDesignerHost предоставляет следующие элементы, связанные с состоянием конструктора:

  • Свойство Loading указывает, загружается ли конструктор или документ.

  • Это Activated событие возникает при активации конструктора перед отображением.

  • Это Deactivated событие возникает при отключении конструктора.

  • Это LoadComplete событие возникает после загрузки документа.

  • Метод Activate() активирует конструктор.

IDesignerHost предоставляет следующие элементы, связанные с управлением компонентами:

  • Свойство Container указывает контейнер для узла конструктора.

  • Свойство RootComponent указывает базовый класс для корневого компонента.

  • Свойство RootComponentClassName указывает имя класса корневого компонента.

  • Метод CreateComponent(Type) создает указанный тип компонента.

  • Метод DestroyComponent(IComponent) уничтожает указанный компонент.

  • Метод GetDesigner(IComponent) получает конструктор, связанный с указанным компонентом.

  • Метод GetType(String) получает экземпляр типа с указанным именем.

IDesignerHost предоставляет следующие элементы, связанные с управлением транзакциями:

  • Свойство InTransaction указывает, находится ли конструктор в транзакции.

  • Свойство TransactionDescription указывает текущее описание транзакции.

  • Это TransactionClosed событие возникает после завершения транзакции.

  • Это TransactionClosing событие возникает, когда транзакция вот-вот будет завершена.

  • Это TransactionOpened событие возникает при начале транзакции.

  • Это TransactionOpening событие возникает, когда транзакция вот-вот начнется.

  • Метод CreateTransaction() создает и возвращает новую транзакцию.

Свойства

Container

Получает контейнер для данного хоста конструктора.

InTransaction

Получает значение, показывающее, находится ли хост конструктора в текущий момент в процессе транзакции.

Loading

Получает значение, показывающее, загружается ли в текущий момент документ хостом конструктора.

RootComponent

Получает экземпляр базового класса, используемого в качестве корневого компонента для текущего конструктора.

RootComponentClassName

Получает полное имя разрабатываемого класса.

TransactionDescription

Получает описание текущей транзакции.

Методы

Activate()

Активизирует конструктор, размещенный на данном хосте.

AddService(Type, Object)

Добавляет указанную службу в контейнер службы.

(Унаследовано от IServiceContainer)
AddService(Type, Object, Boolean)

Добавляет указанную службу в контейнер службы с возможностью повышения службы до любого из родительских контейнеров службы.

(Унаследовано от IServiceContainer)
AddService(Type, ServiceCreatorCallback)

Добавляет указанную службу в контейнер службы.

(Унаследовано от IServiceContainer)
AddService(Type, ServiceCreatorCallback, Boolean)

Добавляет указанную службу в контейнер службы с возможностью повышения службы до родительских контейнеров службы.

(Унаследовано от IServiceContainer)
CreateComponent(Type)

Создает компонент указанного типа и добавляет его в документ проекта.

CreateComponent(Type, String)

Создает компонент с заданным типом и именем и добавляет его в документ проекта.

CreateTransaction()

Создает класс DesignerTransaction, который может инкапсулировать последовательности событий для повышения производительности, а также для включения вспомогательных функциональных возможностей: отмены и возврата.

CreateTransaction(String)

Создает класс DesignerTransaction, который может инкапсулировать последовательности событий для повышения производительности, а также для включения вспомогательных функциональных возможностей: отмены и возврата, с помощью заданного описания транзакции.

DestroyComponent(IComponent)

Уничтожает заданный компонент и удаляет его из контейнера конструктора.

GetDesigner(IComponent)

Получает экземпляр конструктора, содержащий указанный компонент.

GetService(Type)

Возвращает объект службы указанного типа.

(Унаследовано от IServiceProvider)
GetType(String)

Получает экземпляр заданного полного имени типа.

RemoveService(Type)

Удаляет указанный тип службы из контейнера службы.

(Унаследовано от IServiceContainer)
RemoveService(Type, Boolean)

Удаляет указанную службу из контейнера службы с возможностью повышения службы до родительских контейнеров службы.

(Унаследовано от IServiceContainer)

События

Activated

Возникает, когда конструктор активизирован.

Deactivated

Возникает, когда данный конструктор отключен.

LoadComplete

Возникает, когда конструктор завершил загрузку документа.

TransactionClosed

Добавляет обработчик событий для события TransactionClosed.

TransactionClosing

Добавляет обработчик событий для события TransactionClosing.

TransactionOpened

Добавляет обработчик событий для события TransactionOpened.

TransactionOpening

Добавляет обработчик событий для события TransactionOpening.

Методы расширения

GetKeyedService<T>(IServiceProvider, Object)

Получает службу типа T из IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Получает перечисление служб типа serviceType из IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Получает перечисление служб типа T из IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Получает службу типа serviceType из IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Получает службу типа T из IServiceProvider.

CreateAsyncScope(IServiceProvider)

Создает интерфейс AsyncServiceScope, который может использоваться для разрешения служб с ограниченной областью.

CreateScope(IServiceProvider)

Создает интерфейс IServiceScope, который может использоваться для разрешения служб с ограниченной областью.

GetRequiredService(IServiceProvider, Type)

Возвращает службу типа serviceType из IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Возвращает службу типа T из IServiceProvider.

GetService<T>(IServiceProvider)

Возвращает службу типа T из IServiceProvider.

GetServices(IServiceProvider, Type)

Возвращает перечисление служб типа serviceType из IServiceProvider.

GetServices<T>(IServiceProvider)

Возвращает перечисление служб типа T из IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Возвращает объект , который собирает записи журнала, отправляемые в поддельные средства ведения журнала.

GetFakeRedactionCollector(IServiceProvider)

Возвращает экземпляр сборщика поддельных средств редактирования из контейнера внедрения зависимостей.

Применяется к

Өнім Нұсқалар
.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

См. также раздел