IDesignerHost Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt een interface voor het beheren van ontwerptransacties en onderdelen.
public interface class IDesignerHost : IServiceProvider, System::ComponentModel::Design::IServiceContainer
public interface class IDesignerHost : System::ComponentModel::Design::IServiceContainer
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesignerHost : IServiceProvider, System.ComponentModel.Design.IServiceContainer
public interface IDesignerHost : System.ComponentModel.Design.IServiceContainer
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
type IDesignerHost = interface
interface IServiceContainer
interface IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer, IServiceProvider
Public Interface IDesignerHost
Implements IServiceContainer
- Afgeleid
- Kenmerken
- Implementeringen
Voorbeelden
In de volgende voorbeeldcode ziet u hoe u de IDesignerHost service-interface kunt verkrijgen van een ontwerpfunctie of siteonderdeel.
// 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)
De volgende voorbeeldcode laat zien hoe u de IDesignerHost interface gebruikt om projectonderdelen weer te geven.
#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.
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
Opmerkingen
IDesignerHost is een interface die werkt met .NET Framework Forms Designer-architectuur om ondersteuning te bieden voor ontwerptransactie- en onderdeelbeheer.
.NET Framework biedt geen implementatie van deze interface. De interface wordt geïmplementeerd door ontwikkelhulpprogramma's die ontwerpers ondersteunen.
Notities voor bellers
Als u een implementatie van IDesignerHost een ontwikkelomgeving wilt verkrijgen, roept GetService(Type) u aan terwijl uw onderdeel actief is in de ontwerpmodus en geeft u het type IDesignerHost om een IDesignerHost service-interface aan te vragen.
IDesignerHost biedt de volgende leden met betrekking tot de status van de ontwerper:
De Loading eigenschap geeft aan of een ontwerper of document wordt geladen.
De Activated gebeurtenis treedt op wanneer een ontwerper wordt geactiveerd voordat deze wordt weergegeven.
De Deactivated gebeurtenis treedt op wanneer een ontwerper is gedeactiveerd.
De LoadComplete gebeurtenis treedt op nadat een document is geladen.
De Activate() methode activeert de ontwerpfunctie.
IDesignerHost biedt de volgende leden met betrekking tot het beheren van onderdelen:
De Container eigenschap geeft de container voor de ontwerphost aan.
De RootComponent eigenschap geeft de basisklasse voor het hoofdonderdeel aan.
De RootComponentClassName eigenschap geeft de naam aan van de klasse van het hoofdonderdeel.
Met de CreateComponent(Type) methode wordt het opgegeven type onderdeel gemaakt.
De DestroyComponent(IComponent) methode vernietigt het opgegeven onderdeel.
De GetDesigner(IComponent) methode haalt de ontwerpfunctie op die is gekoppeld aan een opgegeven onderdeel.
De GetType(String) methode haalt een exemplaar van het type op met de opgegeven naam.
IDesignerHost biedt de volgende leden met betrekking tot het beheren van transacties:
De InTransaction eigenschap geeft aan of de ontwerper zich in een transactie bevindt.
De TransactionDescription eigenschap geeft de beschrijving van de huidige transactie aan.
De TransactionClosed gebeurtenis treedt op wanneer een transactie is voltooid.
De TransactionClosing gebeurtenis treedt op wanneer een transactie op het punt staat te worden voltooid.
De TransactionOpened gebeurtenis treedt op wanneer een transactie is gestart.
De TransactionOpening gebeurtenis treedt op wanneer een transactie op het punt staat te beginnen.
De CreateTransaction() methode maakt en retourneert een nieuwe transactie.
Eigenschappen
| Name | Description |
|---|---|
| Container |
Hiermee haalt u de container voor deze ontwerphost op. |
| InTransaction |
Hiermee wordt een waarde opgehaald die aangeeft of de designerhost zich momenteel in een transactie bevindt. |
| Loading |
Hiermee wordt een waarde opgehaald die aangeeft of de ontwerpfunctiehost het document momenteel laadt. |
| RootComponent |
Hiermee haalt u het exemplaar van de basisklasse op dat wordt gebruikt als hoofdonderdeel voor het huidige ontwerp. |
| RootComponentClassName |
Hiermee haalt u de volledig gekwalificeerde naam op van de klasse die wordt ontworpen. |
| TransactionDescription |
Hiermee wordt de beschrijving van de huidige transactie ophaalt. |
Methoden
| Name | Description |
|---|---|
| Activate() |
Hiermee activeert u de ontwerper die deze host host. |
| AddService(Type, Object, Boolean) |
Voegt de opgegeven service toe aan de servicecontainer en promoot de service desgewenst naar bovenliggende servicecontainers. (Overgenomen van IServiceContainer) |
| AddService(Type, Object) |
Voegt de opgegeven service toe aan de servicecontainer. (Overgenomen van IServiceContainer) |
| AddService(Type, ServiceCreatorCallback, Boolean) |
Voegt de opgegeven service toe aan de servicecontainer en promoot de service desgewenst naar bovenliggende servicecontainers. (Overgenomen van IServiceContainer) |
| AddService(Type, ServiceCreatorCallback) |
Voegt de opgegeven service toe aan de servicecontainer. (Overgenomen van IServiceContainer) |
| CreateComponent(Type, String) |
Hiermee maakt u een onderdeel van het opgegeven type en de opgegeven naam en voegt u dit toe aan het ontwerpdocument. |
| CreateComponent(Type) |
Hiermee maakt u een onderdeel van het opgegeven type en voegt u dit toe aan het ontwerpdocument. |
| CreateTransaction() |
Hiermee maakt u een DesignerTransaction gebeurtenisreeks die gebeurtenisreeksen kan inkapselen om de prestaties te verbeteren en functionaliteit voor ongedaan maken en opnieuw uitvoeren in te schakelen. |
| CreateTransaction(String) |
Hiermee maakt u een DesignerTransaction gebeurtenisreeks die gebeurtenisreeksen kan inkapselen om de prestaties te verbeteren en functionaliteit voor ongedaan maken en opnieuw uitvoeren in te schakelen, met behulp van de opgegeven transactiebeschrijving. |
| DestroyComponent(IComponent) |
Vernietigt het opgegeven onderdeel en verwijdert het uit de ontwerpcontainer. |
| GetDesigner(IComponent) |
Hiermee haalt u het ontwerpexemplaren op dat het opgegeven onderdeel bevat. |
| GetService(Type) |
Hiermee wordt het serviceobject van het opgegeven type opgehaald. (Overgenomen van IServiceProvider) |
| GetType(String) |
Hiermee haalt u een exemplaar op van de opgegeven, volledig gekwalificeerde typenaam. |
| RemoveService(Type, Boolean) |
Hiermee verwijdert u het opgegeven servicetype uit de servicecontainer en promoot u de service desgewenst naar bovenliggende servicecontainers. (Overgenomen van IServiceContainer) |
| RemoveService(Type) |
Hiermee verwijdert u het opgegeven servicetype uit de servicecontainer. (Overgenomen van IServiceContainer) |
gebeurtenis
| Name | Description |
|---|---|
| Activated |
Treedt op wanneer deze ontwerper wordt geactiveerd. |
| Deactivated |
Treedt op wanneer deze ontwerper is gedeactiveerd. |
| LoadComplete |
Treedt op wanneer deze ontwerper het document laadt. |
| TransactionClosed |
Voegt een gebeurtenis-handler toe voor de TransactionClosed gebeurtenis. |
| TransactionClosing |
Voegt een gebeurtenis-handler toe voor de TransactionClosing gebeurtenis. |
| TransactionOpened |
Voegt een gebeurtenis-handler toe voor de TransactionOpened gebeurtenis. |
| TransactionOpening |
Voegt een gebeurtenis-handler toe voor de TransactionOpening gebeurtenis. |