IDesigner Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje základní architekturu pro vytvoření vlastního návrháře.
public interface class IDesigner : IDisposable
public interface IDesigner : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesigner : IDisposable
type IDesigner = interface
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IDesigner = interface
interface IDisposable
Public Interface IDesigner
Implements IDisposable
- Odvozené
- Atributy
- Implementuje
Příklady
Tento příklad ukazuje IDesigner implementaci, která ukládá místní odkaz na jeho komponentu, provádí výchozí akci při poklikání na komponentu a poskytuje příkaz návrháře příkaz nabídky sloves.
#using <System.Windows.Forms.dll>
#using <System.Data.dll>
#using <System.Drawing.dll>
#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::Data;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
public ref class ExampleIDesigner: public System::ComponentModel::Design::IDesigner
{
private:
// Local reference to the designer's component.
IComponent^ component;
public:
property System::ComponentModel::IComponent^ Component
{
// Public accessor to the designer's component.
virtual System::ComponentModel::IComponent^ get()
{
return component;
}
}
ExampleIDesigner(){}
virtual void Initialize( System::ComponentModel::IComponent^ component )
{
// This method is called after a designer for a component is created,
// and stores a reference to the designer's component.
this->component = component;
}
// This method peforms the 'default' action for the designer. The default action
// for a basic IDesigner implementation is invoked when the designer's component
// is double-clicked. By default, a component associated with a basic IDesigner
// implementation is displayed in the design-mode component tray.
virtual void DoDefaultAction()
{
// Shows a message box indicating that the default action for the designer was invoked.
MessageBox::Show( "The DoDefaultAction method of an IDesigner implementation was invoked.", "Information" );
}
property System::ComponentModel::Design::DesignerVerbCollection^ Verbs
{
// Returns a collection of designer verb menu items to show in the
// shortcut menu for the designer's component.
[PermissionSetAttribute(SecurityAction::Demand, Name="FullTrust")]
virtual System::ComponentModel::Design::DesignerVerbCollection^ get()
{
DesignerVerbCollection^ verbs = gcnew DesignerVerbCollection;
DesignerVerb^ dv1 = gcnew DesignerVerb( "Display Component Name",gcnew EventHandler( this, &ExampleIDesigner::ShowComponentName ) );
verbs->Add( dv1 );
return verbs;
}
}
private:
// Event handler for displaying a message box showing the designer's component's name.
void ShowComponentName( Object^ /*sender*/, EventArgs^ /*e*/ )
{
if ( this->Component != nullptr )
MessageBox::Show( this->Component->Site->Name, "Designer Component's Name" );
}
public:
// Provides an opportunity to release resources before object destruction.
~ExampleIDesigner(){}
};
// A DesignerAttribute associates the example IDesigner with an example control.
[DesignerAttribute(ExampleIDesigner::typeid)]
public ref class TestControl: public System::Windows::Forms::UserControl
{
public:
TestControl(){}
};
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace IDesignerExample
{
// A DesignerAttribute associates the example IDesigner with an example control.
[DesignerAttribute(typeof(ExampleIDesigner))]
public class TestControl : System.Windows.Forms.UserControl
{
public TestControl()
{
}
}
public class ExampleIDesigner : System.ComponentModel.Design.IDesigner
{
// Local reference to the designer's component.
private IComponent component;
// Public accessor to the designer's component.
public System.ComponentModel.IComponent Component
{
get
{
return component;
}
}
public ExampleIDesigner()
{
}
public void Initialize(System.ComponentModel.IComponent component)
{
// This method is called after a designer for a component is created,
// and stores a reference to the designer's component.
this.component = component;
}
// This method peforms the 'default' action for the designer. The default action
// for a basic IDesigner implementation is invoked when the designer's component
// is double-clicked. By default, a component associated with a basic IDesigner
// implementation is displayed in the design-mode component tray.
public void DoDefaultAction()
{
// Shows a message box indicating that the default action for the designer was invoked.
MessageBox.Show("The DoDefaultAction method of an IDesigner implementation was invoked.", "Information");
}
// Returns a collection of designer verb menu items to show in the
// shortcut menu for the designer's component.
public System.ComponentModel.Design.DesignerVerbCollection Verbs
{
get
{
DesignerVerbCollection verbs = new DesignerVerbCollection();
DesignerVerb dv1 = new DesignerVerb("Display Component Name", new EventHandler(this.ShowComponentName));
verbs.Add( dv1 );
return verbs;
}
}
// Event handler for displaying a message box showing the designer's component's name.
private void ShowComponentName(object sender, EventArgs e)
{
if( this.Component != null )
MessageBox.Show( this.Component.Site.Name, "Designer Component's Name" );
}
// Provides an opportunity to release resources before object destruction.
public void Dispose()
{
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms
' A DesignerAttribute associates the example IDesigner with an example control.
<DesignerAttribute(GetType(ExampleIDesigner))> _
Public Class TestControl
Inherits System.Windows.Forms.UserControl
Public Sub New()
End Sub
End Class
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class ExampleIDesigner
Implements System.ComponentModel.Design.IDesigner
' Local reference to the designer's component.
Private _component As IComponent
' Public accessor to the designer's component.
Public ReadOnly Property Component() As System.ComponentModel.IComponent Implements IDesigner.Component
Get
Return _component
End Get
End Property
Public Sub New()
End Sub
Public Sub Initialize(ByVal component As System.ComponentModel.IComponent) Implements IDesigner.Initialize
' This method is called after a designer for a component is created,
' and stores a reference to the designer's component.
Me._component = component
End Sub
' This method peforms the 'default' action for the designer. The default action
' for a basic IDesigner implementation is invoked when the designer's component
' is double-clicked. By default, a component associated with a basic IDesigner
' implementation is displayed in the design-mode component tray.
Public Sub DoDefaultAction() Implements IDesigner.DoDefaultAction
' Shows a message box indicating that the default action for the designer was invoked.
MessageBox.Show("The DoDefaultAction method of an IDesigner implementation was invoked.", "Information")
End Sub
' Returns a collection of designer verb menu items to show in the
' shortcut menu for the designer's component.
Public ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Implements IDesigner.Verbs
Get
Dim verbs_ As New DesignerVerbCollection()
Dim dv1 As New DesignerVerb("Display Component Name", New EventHandler(AddressOf Me.ShowComponentName))
verbs_.Add(dv1)
Return verbs_
End Get
End Property
' Event handler for displaying a message box showing the designer's component's name.
Private Sub ShowComponentName(ByVal sender As Object, ByVal e As EventArgs)
If (Me.Component IsNot Nothing) Then
MessageBox.Show(Me.Component.Site.Name, "Designer Component's Name")
End If
End Sub
' Provides an opportunity to release resources before object destruction.
Public Sub Dispose() Implements IDisposable.Dispose
End Sub
End Class
Poznámky
Rozhraní IDesigner poskytuje rozhraní, přes které můžete implementovat základní služby pro návrháře. Návrhář může změnit chování komponenty v době návrhu a může poskytovat své vlastní služby a chování. Návrhář je aktivní pouze v době návrhu a musí být přidružen k typu komponenty pomocí DesignerAttribute , aby byl načten při vytvoření komponenty přidruženého typu při návrhu.
Rozhraní IDesigner poskytuje metody a vlastnosti, které můžete implementovat za účelem zajištění vlastního chování v době návrhu.
Implementujte metodu Initialize návrháře k provádění akcí při vytvoření komponenty. To může být užitečné, pokud by součást měla mít v době návrhu speciální konfiguraci nebo pokud by se její konfigurace měla měnit v závislosti na podmínkách, které může určit návrhář.
Návrhář může poskytovat příkazy nabídky v místní nabídce, která se zobrazí, když uživatel klikne pravým tlačítkem myši na komponentu nebo ovládací prvek v prostředí návrhu. Implementací Verbs vlastnosti můžete definovat přistupující objekt get, který vrací DesignerVerbCollection objekt obsahující DesignerVerb objekty pro generování příkazů nabídky.
Návrhář komponenty, která se zobrazí na hlavním panelu komponent, může při poklikání na komponentu provést výchozí akci. Implementujte metodu DoDefaultAction pro určení chování, které se má provést při poklikání na komponentu.
Návrhář může také použít dostupné služby v době návrhu k provádění různých úloh, včetně průzkumu aktuálního prostředí v době návrhu pro součásti a jejich vlastnosti, čtení a nastavení hodnot vlastností součástí, správy panelu nástrojů, správy vybraných komponent nebo zobrazení uživatelského rozhraní, které lze použít ke konfiguraci hodnot nebo k použití dalšího zpracování.
Chcete-li implementovat návrhář pro ovládací prvek, který může být na formuláři, můžete dědit z ControlDesigner třídy . Ovládací prvky, jejichž přidružený návrhář není odvozen z ControlDesigner , jsou zobrazeny v zásobníku komponent. Třídy ComponentDesigner a ControlDesigner implementují IDesigner rozhraní a poskytují další podporu při návrhu, která může být pro autory návrhářů k dispozici. Další informace najdete v referenční dokumentaci k těmto třídám.
Přehled vytváření komponent návrhu najdete v tématu Rozšíření podpory Design-Time.
Vlastnosti
Component |
Získá základní komponentu, kterou tento návrhář navrhuje. |
Verbs |
Získá kolekci sloves v době návrhu podporované návrhářem. |
Metody
Dispose() |
Provede aplikací definované úlohy spojené s uvolněním nebo resetováním nespravovaných prostředků. (Zděděno od IDisposable) |
DoDefaultAction() |
Provede výchozí akci pro tohoto návrháře. |
Initialize(IComponent) |
Inicializuje návrháře se zadanou komponentou. |