IDesigner 接口

定义

提供用于生成自定义设计器的基本框架。Provides the basic framework for building a custom designer.

public interface class IDesigner : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public interface IDesigner : IDisposable
type IDesigner = interface
    interface IDisposable
Public Interface IDesigner
Implements IDisposable
派生
属性
实现

示例

此示例演示了一个 IDesigner 实现,该实现存储对其组件的本地引用,双击该组件时执行默认操作,并提供设计器谓词菜单命令。This example demonstrates an IDesigner implementation that stores a local reference to its component, performs a default action when the component is double-clicked, and provides a designer verb menu command.

#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()
        {	
        }
    }

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

注解

IDesigner 接口提供了一个接口,通过该接口,您可以实现设计器的基本服务。The IDesigner interface provides an interface through which you can implement basic services for a designer. 设计器可以在设计时修改组件的行为,并且可以提供自己的服务和行为。A designer can modify the behavior of a component at design time, and may provide its own services and behavior. 设计器仅在设计时处于活动状态,并且必须与使用 DesignerAttribute 的组件类型相关联,以便在设计时创建关联类型的组件时进行加载。A designer is only active at design-time, and must be associated with a type of component using a DesignerAttribute in order to be loaded when a component of the associated type is created at design time.

IDesigner 接口提供了一些方法和属性,您可以实现这些方法和属性,以便在设计时提供自定义行为。The IDesigner interface provides methods and properties that you can implement in order to provide custom behavior at design time.

实现设计器的 Initialize 方法,以便在创建组件时执行操作。Implement the Initialize method of a designer to perform actions when a component is created. 如果组件应在设计时具有特殊配置,或者如果组件的配置应根据设计器可以确定的条件而发生更改,则这会很有用。This can be useful if a component should have a special configuration at design-time, or if its configuration should change depending on conditions that the designer can determine.

当用户在设计时环境中右键单击组件或控件时,设计器可以在快捷菜单上提供菜单命令。A designer can provide menu commands on the shortcut menu that is displayed when a user right-clicks a component or control in the design-time environment. 可以实现 Verbs 属性来定义一个 get 访问器,该访问器返回一个包含用于生成菜单命令的 DesignerVerb 对象的 DesignerVerbCollectionYou can implement the Verbs property to define a get accessor that returns a DesignerVerbCollection containing the DesignerVerb objects for generating menu commands.

双击组件时,组件栏中显示的组件的设计器可以执行默认操作。A designer for a component that appears in the component tray can perform a default action when the component is double-clicked. 实现 DoDefaultAction 方法,以指定在双击该组件时要执行的行为。Implement the DoDefaultAction method to specify the behavior to perform when the component is double-clicked.

设计器还可以使用可用的设计时服务来执行各种任务,包括调查组件的当前设计时环境及其属性、读取和设置组件的属性的值,以及管理工具箱,管理所选组件,或显示可用于配置值或应用进一步处理的用户界面。A designer can also use the available design-time services to perform a variety of tasks, including surveying the current design-time environment for components and their properties, reading and setting the values of properties of components, managing the toolbox, managing selected components, or displaying a user interface that can be used to configure values or to apply further processing.

若要实现可放置在窗体上的控件的设计器,可以从 ControlDesigner 类继承。To implement a designer for a control that can be sited on a form, you can inherit from the ControlDesigner class. 其关联设计器不从 ControlDesigner 派生的控件将显示在组件栏中。Controls whose associated designer does not derive from ControlDesigner are displayed in the component tray. ComponentDesignerControlDesigner 类实现了 IDesigner 接口,并提供了其他可用于设计器作者的设计时支持。The ComponentDesigner and ControlDesigner classes implement the IDesigner interface and provide additional design-time support that may be of use to authors of designers. 有关详细信息,请参阅这些类的参考文档。For more information, see the reference documentation for these classes.

有关创建设计组件的概述,请参阅扩展设计时支持For an overview of creating design components, please see Extending Design-Time Support.

属性

Component

获取此设计器正在设计的基组件。Gets the base component that this designer is designing.

Verbs

获取设计器支持的设计时谓词的集合。Gets a collection of the design-time verbs supported by the designer.

方法

Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

(继承自 IDisposable)
DoDefaultAction()

执行此设计器的默认行为。Performs the default action for this designer.

Initialize(IComponent)

使用指定的组件初始化设计器。Initializes the designer with the specified component.

适用于

另请参阅