IDesignerHost Interface
Provides an interface for managing designer transactions and components.
Assembly: System (in System.dll)
The IDesignerHost type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | Container | Gets the container for this designer host. |
![]() | InTransaction | Gets a value indicating whether the designer host is currently in a transaction. |
![]() | Loading | Gets a value indicating whether the designer host is currently loading the document. |
![]() | RootComponent | Gets the instance of the base class used as the root component for the current design. |
![]() | RootComponentClassName | Gets the fully qualified name of the class being designed. |
![]() | TransactionDescription | Gets the description of the current transaction. |
| Name | Description | |
|---|---|---|
![]() | Activate | Activates the designer that this host is hosting. |
![]() | AddService(Type, ServiceCreatorCallback) | Adds the specified service to the service container. (Inherited from IServiceContainer.) |
![]() | AddService(Type, Object) | Adds the specified service to the service container. (Inherited from IServiceContainer.) |
![]() | AddService(Type, ServiceCreatorCallback, Boolean) | Adds the specified service to the service container, and optionally promotes the service to parent service containers. (Inherited from IServiceContainer.) |
![]() | AddService(Type, Object, Boolean) | Adds the specified service to the service container, and optionally promotes the service to any parent service containers. (Inherited from IServiceContainer.) |
![]() | CreateComponent(Type) | Creates a component of the specified type and adds it to the design document. |
![]() | CreateComponent(Type, String) | Creates a component of the specified type and name, and adds it to the design document. |
![]() | CreateTransaction() | Creates a DesignerTransaction that can encapsulate event sequences to improve performance and enable undo and redo support functionality. |
![]() | CreateTransaction(String) | Creates a DesignerTransaction that can encapsulate event sequences to improve performance and enable undo and redo support functionality, using the specified transaction description. |
![]() | DestroyComponent | Destroys the specified component and removes it from the designer container. |
![]() | GetDesigner | Gets the designer instance that contains the specified component. |
![]() | GetService | Gets the service object of the specified type. (Inherited from IServiceProvider.) |
![]() | GetType | Gets an instance of the specified, fully qualified type name. |
![]() | RemoveService(Type) | Removes the specified service type from the service container. (Inherited from IServiceContainer.) |
![]() | RemoveService(Type, Boolean) | Removes the specified service type from the service container, and optionally promotes the service to parent service containers. (Inherited from IServiceContainer.) |
| Name | Description | |
|---|---|---|
![]() | Activated | Occurs when this designer is activated. |
![]() | Deactivated | Occurs when this designer is deactivated. |
![]() | LoadComplete | Occurs when this designer completes loading its document. |
![]() | TransactionClosed | Adds an event handler for the TransactionClosed event. |
![]() | TransactionClosing | Adds an event handler for the TransactionClosing event. |
![]() | TransactionOpened | Adds an event handler for the TransactionOpened event. |
![]() | TransactionOpening | Adds an event handler for the TransactionOpening event. |
IDesignerHost is an interface that works with the .NET Framework forms designer architecture to provide support for designer transaction and component management.
The .NET Framework does not provide an implementation of this interface. The interface is implemented by development tools that support designers.
Notes to CallersTo obtain an implementation of IDesignerHost from a development environment, call GetService while your component is active in design mode, passing the type of IDesignerHost to request an IDesignerHost service interface.
IDesignerHost provides the following members related to designer state:
The Loading property indicates whether a designer or document is being loaded.
The Activated event occurs when a designer is activated before display.
The Deactivated event occurs when a designer is deactivated.
The LoadComplete event occurs after a document is loaded.
The Activate method activates the designer.
IDesignerHost provides the following members related to managing components:
The Container property indicates the container for the designer host.
The RootComponent property indicates the base class for the root component.
The RootComponentClassName property indicates the name of the class of the root component.
The CreateComponent method creates the specified type of component.
The DestroyComponent method destroys the specified component.
The GetDesigner method gets the designer associated with a specified component.
The GetType method gets an instance of the type with the specified name.
IDesignerHost provides the following members related to managing transactions:
The InTransaction property indicates whether the designer is in a transaction.
The TransactionDescription property indicates the current transaction description.
The TransactionClosed event occurs when a transaction has been completed.
The TransactionClosing event occurs when a transaction is about to be completed.
The TransactionOpened event occurs when a transaction has begun.
The TransactionOpening event occurs when a transaction is about to begin.
The CreateTransaction method creates and returns a new transaction.
The following example code demonstrates how to obtain the IDesignerHost service interface from a designer or sited component.
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(){} };
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
