IDesignerHost Interface

Définition

Fournit une interface pour la gestion des transactions et composants du concepteur.Provides an interface for managing designer transactions and components.

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
Public Interface IDesignerHost
Implements IServiceContainer, IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer
Dérivé
Attributs
Implémente

Exemples

L’exemple de code suivant montre comment obtenir l’interface de service IDesignerHost à partir d’un concepteur ou d’un composant de site.The following example code demonstrates how to obtain the IDesignerHost service interface from a designer or sited component.

// 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)

L’exemple de code suivant illustre l’utilisation de l’interface IDesignerHost pour répertorier les composants de projet.The following example code demonstrates using the IDesignerHost interface to list project components.

#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.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    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 

Remarques

IDesignerHost est une interface qui fonctionne avec l’architecture du concepteur .NET Framework Forms pour assurer la prise en charge de la gestion des transactions et des composants du concepteur.IDesignerHost is an interface that works with the .NET Framework forms designer architecture to provide support for designer transaction and component management.

Le .NET Framework ne fournit pas une implémentation de cette interface.The .NET Framework does not provide an implementation of this interface. L’interface est implémentée par les outils de développement qui prennent en charge les concepteurs.The interface is implemented by development tools that support designers.

Notes pour les appelants

Pour obtenir une implémentation de IDesignerHost à partir d’un environnement de développement, appelez GetService(Type) alors que votre composant est actif en mode création, en passant le type de IDesignerHost pour demander une interface de service IDesignerHost.To obtain an implementation of IDesignerHost from a development environment, call GetService(Type) while your component is active in design mode, passing the type of IDesignerHost to request an IDesignerHost service interface.

IDesignerHost fournit les membres suivants liés à l’état du concepteur :IDesignerHost provides the following members related to designer state: -La propriété Loading indique si un concepteur ou un document est en cours de chargement.- The Loading property indicates whether a designer or document is being loaded.

-L’événement Activated se produit lorsqu’un concepteur est activé avant l’affichage.- The Activated event occurs when a designer is activated before display.

-L’événement Deactivated se produit lorsqu’un concepteur est désactivé.- The Deactivated event occurs when a designer is deactivated.

-L’événement LoadComplete se produit après le chargement d’un document.- The LoadComplete event occurs after a document is loaded.

-La méthode Activate() active le concepteur.- The Activate() method activates the designer.

IDesignerHost fournit les membres suivants liés à la gestion des composants :IDesignerHost provides the following members related to managing components: -La propriété Container indique le conteneur de l’hôte du concepteur.- The Container property indicates the container for the designer host.

-La propriété RootComponent indique la classe de base pour le composant racine.- The RootComponent property indicates the base class for the root component.

-La propriété RootComponentClassName indique le nom de la classe du composant racine.- The RootComponentClassName property indicates the name of the class of the root component.

-La méthode CreateComponent(Type) crée le type de composant spécifié.- The CreateComponent(Type) method creates the specified type of component.

-La méthode DestroyComponent(IComponent) détruit le composant spécifié.- The DestroyComponent(IComponent) method destroys the specified component.

-La méthode GetDesigner(IComponent) obtient le concepteur associé à un composant spécifié.- The GetDesigner(IComponent) method gets the designer associated with a specified component.

-La méthode GetType(String) obtient une instance du type avec le nom spécifié.- The GetType(String) method gets an instance of the type with the specified name.

IDesignerHost fournit les membres suivants liés à la gestion des transactions :IDesignerHost provides the following members related to managing transactions: -La propriété InTransaction indique si le concepteur est dans une transaction.- The InTransaction property indicates whether the designer is in a transaction.

-La propriété TransactionDescription indique la description de la transaction actuelle.- The TransactionDescription property indicates the current transaction description.

-L’événement TransactionClosed se produit lorsqu’une transaction est terminée.- The TransactionClosed event occurs when a transaction has been completed.

-L’événement TransactionClosing se produit lorsqu’une transaction est sur le paragraphe d’être terminée.- The TransactionClosing event occurs when a transaction is about to be completed.

-L’événement TransactionOpened se produit lorsqu’une transaction a commencé.- The TransactionOpened event occurs when a transaction has begun.

-L’événement TransactionOpening se produit lorsqu’une transaction est sur le le début.- The TransactionOpening event occurs when a transaction is about to begin.

-La méthode CreateTransaction() crée et retourne une nouvelle transaction.- The CreateTransaction() method creates and returns a new transaction.

Propriétés

Container

Obtient le conteneur de cet hôte de concepteur.Gets the container for this designer host.

InTransaction

Obtient une valeur indiquant si l'hôte du concepteur se trouve actuellement dans une transaction.Gets a value indicating whether the designer host is currently in a transaction.

Loading

Obtient une valeur indiquant si l'hôte du concepteur charge actuellement le document.Gets a value indicating whether the designer host is currently loading the document.

RootComponent

Obtient l'instance de la classe de base utilisée comme composant racine pour le design en cours.Gets the instance of the base class used as the root component for the current design.

RootComponentClassName

Obtient le nom qualifié complet de la classe dont le design est en cours.Gets the fully qualified name of the class being designed.

TransactionDescription

Obtient la description de la transaction en cours.Gets the description of the current transaction.

Méthodes

Activate()

Active le concepteur hébergé par cet hôte.Activates the designer that this host is hosting.

AddService(Type, Object)

Ajoute le service spécifié au conteneur de service.Adds the specified service to the service container.

(Hérité de IServiceContainer)
AddService(Type, Object, Boolean)

Ajoute le service spécifié au conteneur de services et promeut éventuellement le service vers les conteneurs de services parents éventuels.Adds the specified service to the service container, and optionally promotes the service to any parent service containers.

(Hérité de IServiceContainer)
AddService(Type, ServiceCreatorCallback)

Ajoute le service spécifié au conteneur de service.Adds the specified service to the service container.

(Hérité de IServiceContainer)
AddService(Type, ServiceCreatorCallback, Boolean)

Ajoute le service spécifié au conteneur de service, et promeut éventuellement le service au niveau de n'importe quel conteneur de service parent.Adds the specified service to the service container, and optionally promotes the service to parent service containers.

(Hérité de IServiceContainer)
CreateComponent(Type)

Crée un composant du type spécifié et l'ajoute au document de design.Creates a component of the specified type and adds it to the design document.

CreateComponent(Type, String)

Crée un composant du type spécifié avec le nom donné et l'ajoute au document de design.Creates a component of the specified type and name, and adds it to the design document.

CreateTransaction()

Crée un DesignerTransaction pouvant encapsuler des séquences d'événements afin d'améliorer les performances et de permettre l'annulation, ainsi que le rétablissement des fonctionnalités de prise en charge.Creates a DesignerTransaction that can encapsulate event sequences to improve performance and enable undo and redo support functionality.

CreateTransaction(String)

Crée un DesignerTransaction pouvant encapsuler des séquences d'événements afin d'améliorer les performances et de permettre l'annulation, ainsi que le rétablissement des fonctionnalités de prise en charge, à l'aide de la description de la transaction spécifiée.Creates a DesignerTransaction that can encapsulate event sequences to improve performance and enable undo and redo support functionality, using the specified transaction description.

DestroyComponent(IComponent)

Détruit le composant spécifié et le supprime du conteneur du concepteur.Destroys the specified component and removes it from the designer container.

GetDesigner(IComponent)

Obtient l'instance de concepteur qui contient le composant spécifié.Gets the designer instance that contains the specified component.

GetService(Type)

Obtient l'objet de service du type spécifié.Gets the service object of the specified type.

(Hérité de IServiceProvider)
GetType(String)

Obtient une instance du nom de type qualifié complet spécifié.Gets an instance of the specified, fully qualified type name.

RemoveService(Type)

Supprime le type de service spécifié du conteneur de service.Removes the specified service type from the service container.

(Hérité de IServiceContainer)
RemoveService(Type, Boolean)

Supprime le type de service spécifié du conteneur de service, et promeut éventuellement le service au niveau de n'importe quel conteneur de service parent.Removes the specified service type from the service container, and optionally promotes the service to parent service containers.

(Hérité de IServiceContainer)

Événements

Activated

Se produit lorsque ce concepteur est activé.Occurs when this designer is activated.

Deactivated

Se produit lorsque ce concepteur est désactivé.Occurs when this designer is deactivated.

LoadComplete

Se produit lorsque ce concepteur a terminé le chargement de son document.Occurs when this designer completes loading its document.

TransactionClosed

Ajoute un gestionnaire d'événements pour l'événement TransactionClosed.Adds an event handler for the TransactionClosed event.

TransactionClosing

Ajoute un gestionnaire d'événements pour l'événement TransactionClosing.Adds an event handler for the TransactionClosing event.

TransactionOpened

Ajoute un gestionnaire d'événements pour l'événement TransactionOpened.Adds an event handler for the TransactionOpened event.

TransactionOpening

Ajoute un gestionnaire d'événements pour l'événement TransactionOpening.Adds an event handler for the TransactionOpening event.

S’applique à

Voir aussi