IDesignerHost Interfaccia

Definizione

Fornisce un'interfaccia per la gestione delle transazioni e dei componenti della finestra di progettazione.Provides an interface for managing designer transactions and components.

public interface class IDesignerHost : IServiceProvider, System::ComponentModel::Design::IServiceContainer
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
type IDesignerHost = interface
    interface IServiceContainer
    interface IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer, IServiceProvider
Derivato
Attributi
Implementazioni

Esempi

Nell'esempio di codice seguente viene illustrato come ottenere IDesignerHost l'interfaccia del servizio da una finestra di progettazione o da un componente sito.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)

Nell'esempio di codice riportato di seguito IDesignerHost viene illustrato l'utilizzo dell'interfaccia per elencare i componenti del progetto.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 

Commenti

IDesignerHostè un'interfaccia che interagisce con l'architettura di progettazione di .NET Framework form per fornire supporto per la gestione delle transazioni e dei componenti della finestra di progettazione.IDesignerHost is an interface that works with the .NET Framework forms designer architecture to provide support for designer transaction and component management.

Il .NET Framework non fornisce un'implementazione di questa interfaccia.The .NET Framework does not provide an implementation of this interface. L'interfaccia viene implementata da strumenti di sviluppo che supportano le finestre di progettazione.The interface is implemented by development tools that support designers.

Note per i chiamanti

Per ottenere un'implementazione di IDesignerHost da un ambiente di sviluppo, GetService(Type) chiamare quando il componente è attivo in modalità progettazione, passando il tipo IDesignerHost di per richiedere IDesignerHost un'interfaccia del servizio.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.

IDesignerHostfornisce i seguenti membri correlati allo stato della finestra di progettazione:IDesignerHost provides the following members related to designer state: -La Loading proprietà indica se è in corso il caricamento di una finestra di progettazione o di un documento.- The Loading property indicates whether a designer or document is being loaded.

-L' Activated evento si verifica quando viene attivata una finestra di progettazione prima della visualizzazione.- The Activated event occurs when a designer is activated before display.

-L' Deactivated evento si verifica quando viene disattivata una finestra di progettazione.- The Deactivated event occurs when a designer is deactivated.

-L' LoadComplete evento si verifica dopo il caricamento di un documento.- The LoadComplete event occurs after a document is loaded.

-Il Activate() metodo attiva la finestra di progettazione.- The Activate() method activates the designer.

IDesignerHostfornisce i membri seguenti relativi alla gestione dei componenti di:IDesignerHost provides the following members related to managing components: -La Container proprietà indica il contenitore per l'host della finestra di progettazione.- The Container property indicates the container for the designer host.

-La RootComponent proprietà indica la classe di base per il componente radice.- The RootComponent property indicates the base class for the root component.

-La RootComponentClassName proprietà indica il nome della classe del componente radice.- The RootComponentClassName property indicates the name of the class of the root component.

-Il CreateComponent(Type) metodo crea il tipo di componente specificato.- The CreateComponent(Type) method creates the specified type of component.

-Il DestroyComponent(IComponent) metodo elimina il componente specificato.- The DestroyComponent(IComponent) method destroys the specified component.

-Il GetDesigner(IComponent) metodo ottiene la finestra di progettazione associata a un componente specificato.- The GetDesigner(IComponent) method gets the designer associated with a specified component.

-Il GetType(String) metodo ottiene un'istanza del tipo con il nome specificato.- The GetType(String) method gets an instance of the type with the specified name.

IDesignerHostfornisce i membri seguenti relativi alla gestione delle transazioni:IDesignerHost provides the following members related to managing transactions: -La InTransaction proprietà indica se la finestra di progettazione si trova in una transazione.- The InTransaction property indicates whether the designer is in a transaction.

-La TransactionDescription proprietà indica la descrizione della transazione corrente.- The TransactionDescription property indicates the current transaction description.

-L' TransactionClosed evento si verifica quando una transazione è stata completata.- The TransactionClosed event occurs when a transaction has been completed.

-L' TransactionClosing evento si verifica quando una transazione sta per essere completata.- The TransactionClosing event occurs when a transaction is about to be completed.

-L' TransactionOpened evento si verifica all'inizio di una transazione.- The TransactionOpened event occurs when a transaction has begun.

-L' TransactionOpening evento si verifica quando una transazione sta per iniziare.- The TransactionOpening event occurs when a transaction is about to begin.

-Il CreateTransaction() metodo crea e restituisce una nuova transazione.- The CreateTransaction() method creates and returns a new transaction.

Proprietà

Container

Ottiene il contenitore di questo host di progettazione.Gets the container for this designer host.

InTransaction

Ottiene un valore che indica se l'host di progettazione si trova attualmente in una transazione.Gets a value indicating whether the designer host is currently in a transaction.

Loading

Ottiene un valore che indica se al momento l'host di progettazione sta caricando il documento.Gets a value indicating whether the designer host is currently loading the document.

RootComponent

Ottiene l'istanza della classe di base utilizzata come componente di primo livello per la progettazione corrente.Gets the instance of the base class used as the root component for the current design.

RootComponentClassName

Ottiene il nome completo della classe che si sta progettando.Gets the fully qualified name of the class being designed.

TransactionDescription

Ottiene la descrizione della transazione corrente.Gets the description of the current transaction.

Metodi

Activate()

Attiva la finestra di progettazione ospitata dall'host.Activates the designer that this host is hosting.

AddService(Type, Object)

Aggiunge il servizio specificato al contenitore dei servizi.Adds the specified service to the service container.

(Ereditato da IServiceContainer)
AddService(Type, Object, Boolean)

Aggiunge il servizio specificato al contenitore dei servizi e facoltativamente promuove il servizio a tutti i contenitori dei servizi padre.Adds the specified service to the service container, and optionally promotes the service to any parent service containers.

(Ereditato da IServiceContainer)
AddService(Type, ServiceCreatorCallback)

Aggiunge il servizio specificato al contenitore dei servizi.Adds the specified service to the service container.

(Ereditato da IServiceContainer)
AddService(Type, ServiceCreatorCallback, Boolean)

Aggiunge il servizio specificato al contenitore dei servizi e facoltativamente promuove il servizio ai contenitori dei servizi padre.Adds the specified service to the service container, and optionally promotes the service to parent service containers.

(Ereditato da IServiceContainer)
CreateComponent(Type)

Crea un componente del tipo specificato e lo aggiunge al documento di progettazione.Creates a component of the specified type and adds it to the design document.

CreateComponent(Type, String)

Crea un componente del tipo e del nome specificati e lo aggiunge al documento di progettazione.Creates a component of the specified type and name, and adds it to the design document.

CreateTransaction()

Crea un oggetto DesignerTransaction in grado di incapsulare sequenze di eventi al fine di migliorare le prestazioni e consentire funzioni di annullamento e di ripristino.Creates a DesignerTransaction that can encapsulate event sequences to improve performance and enable undo and redo support functionality.

CreateTransaction(String)

Crea un oggetto DesignerTransaction in grado di incapsulare sequenze di eventi al fine di migliorare le prestazioni e consentire funzioni di annullamento e di ripristino, utilizzando la descrizione della transazione specificata.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)

Distrugge il componente specificato e lo rimuove dal contenitore di progettazione.Destroys the specified component and removes it from the designer container.

GetDesigner(IComponent)

Ottiene l'istanza di progettazione contenente il componente specificato.Gets the designer instance that contains the specified component.

GetService(Type)

Ottiene l'oggetto Service del tipo specificato.Gets the service object of the specified type.

(Ereditato da IServiceProvider)
GetType(String)

Ottiene un'istanza del nome completo del tipo specificato.Gets an instance of the specified, fully qualified type name.

RemoveService(Type)

Rimuove il tipo di servizio specificato dal contenitore dei servizi.Removes the specified service type from the service container.

(Ereditato da IServiceContainer)
RemoveService(Type, Boolean)

Rimuove il servizio specificato dal contenitore dei servizi e facoltativamente promuove il servizio ai contenitori dei servizi padre.Removes the specified service type from the service container, and optionally promotes the service to parent service containers.

(Ereditato da IServiceContainer)

Eventi

Activated

Viene generato quando viene attivata la finestra di progettazione.Occurs when this designer is activated.

Deactivated

Viene generato quando viene disattivata la finestra di progettazione.Occurs when this designer is deactivated.

LoadComplete

Viene generato quando la finestra di progettazione completa il caricamento del documento.Occurs when this designer completes loading its document.

TransactionClosed

Aggiunge un gestore eventi per l'evento TransactionClosed.Adds an event handler for the TransactionClosed event.

TransactionClosing

Aggiunge un gestore eventi per l'evento TransactionClosing.Adds an event handler for the TransactionClosing event.

TransactionOpened

Aggiunge un gestore eventi per l'evento TransactionOpened.Adds an event handler for the TransactionOpened event.

TransactionOpening

Aggiunge un gestore eventi per l'evento TransactionOpening.Adds an event handler for the TransactionOpening event.

Si applica a

Vedi anche