IDesigner 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供建置 (Build) 自訂設計工具的基本架構。
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
- 衍生
- 屬性
- 實作
範例
這個範例示範的實作會 IDesigner 儲存其元件的本機參考、按兩下元件時執行預設動作,並提供設計工具動詞功能表命令。
#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
備註
介面 IDesigner 提供介面,您可以透過此介面來實作設計工具的基本服務。 設計工具可以在設計時間修改元件的行為,也可以提供自己的服務和行為。 設計工具只在設計時間作用中,而且必須使用 與元件 DesignerAttribute 類型相關聯,才能在設計時間建立關聯類型的元件時載入。
介面 IDesigner 提供可在設計時間實作的方法和屬性,以提供自定義行為。
實作 Initialize 設計工具的方法,以在建立元件時執行動作。 如果元件在設計時間應該有特殊元件,或者其組態應該根據設計工具可以判斷的條件而變更,這非常有用。
設計工具可以在快捷方式功能表上提供功能表命令,當使用者以滑鼠右鍵按兩下設計時間環境中的元件或控制項時,即會顯示。 您可以實作 Verbs 屬性來定義 get 存取子,以傳回 DesignerVerbCollection 包含 DesignerVerb 產生選單指令之 物件的 。
當元件按兩下時,出現在元件匣中的元件設計工具可以執行預設動作。 實作 DoDefaultAction 方法,以指定雙擊元件時要執行的行為。
設計工具也可以使用可用的設計時間服務來執行各種工作,包括調查元件及其屬性的目前設計時間環境、讀取和設定元件的屬性值、管理工具箱、管理選取的元件,或顯示可用來設定值或套用進一步處理的使用者介面。
若要實作可放在表單上之控件的設計工具,您可以從 類別繼承 ControlDesigner 。 相關聯的設計工具不會衍生自 ControlDesigner 的控件會顯示在元件匣中。 ComponentDesigner和 ControlDesigner 類別會實IDesigner作 介面,並提供其他設計時間支援,這些支援可能用於設計工具的作者。 如需詳細資訊,請參閱這些類別的參考檔。
如需建立設計元件的概觀,請參閱 擴充 Design-Time 支援。
屬性
Component |
取得此設計工具正在設計的基底元件。 |
Verbs |
取得設計工具所支援的設計階段動詞命令集合。 |
方法
Dispose() |
執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。 (繼承來源 IDisposable) |
DoDefaultAction() |
執行這個設計工具的預設動作。 |
Initialize(IComponent) |
使用指定的元件,初始化設計工具。 |