IDesigner インターフェイス
カスタム デザイナを構築するための基本フレームワークを提供します。
名前空間: System.ComponentModel.Design
アセンブリ: System (system.dll 内)
構文
'宣言
<ComVisibleAttribute(True)> _
Public Interface IDesigner
Inherits IDisposable
'使用
Dim instance As IDesigner
[ComVisibleAttribute(true)]
public interface IDesigner : IDisposable
[ComVisibleAttribute(true)]
public interface class IDesigner : IDisposable
/** @attribute ComVisibleAttribute(true) */
public interface IDesigner extends IDisposable
ComVisibleAttribute(true)
public interface IDesigner extends IDisposable
解説
IDesigner インターフェイスは、デザイナの基本的なサービスを実装できるインターフェイスを提供します。デザイナは、デザイン時にコンポーネントの動作を変更でき、それ独自のサービスと動作も提供できます。デザイナはデザイン時だけにアクティブになります。デザイナは、DesignerAttribute を使用して、コンポーネントの型に関連付ける必要があります。こうすることで、関連付けられた型のコンポーネントがデザイン時に作成されると、そのデザイナが読み込まれます。
IDesigner インターフェイスには、デザイン時のカスタム動作を提供するために実装できるメソッドとプロパティが用意されています。
コンポーネントが作成されたときにアクションを実行するには、デザイナの Initialize メソッドを実装します。これは、デザイン時にコンポーネントが特別な構成を持つ場合や、デザイナが決定できる条件に基づいてコンポーネントの構成を変更する必要がある場合に便利です。
デザイナは、ユーザーがデザイン時環境でコンポーネントやコントロールを右クリックしたときに表示されるショートカット メニューにメニュー コマンドを提供できます。Verbs プロパティを実装して、生成するメニュー コマンドに対応する DesignerVerb オブジェクトを格納している DesignerVerbCollection を返す get アクセサを定義できます。
コンポーネント トレイに表示されるコンポーネントのデザイナは、コンポーネントがダブルクリックされたときに既定のアクションを実行できます。コンポーネントがダブルクリックされたときに実行する動作を指定するには、DoDefaultAction メソッドを実装します。
またデザイナは、さまざまなタスクを実行する利用可能なデザイン時サービスも使用できます。実行できるタスクには、各コンポーネントとそのプロパティに対応する現在のデザイン時環境の調査、コンポーネントのプロパティ値の読み込みや設定、ツールボックスの管理、選択したコンポーネントの管理、値の設定や追加処理の適用に使用できるユーザー インターフェイスの表示などがあります。
フォーム上に配置できるコントロールのデザイナを実装するには、ControlDesigner クラスから継承します。関連付けられているデザイナが ControlDesigner を継承していないコントロールは、コンポーネント トレイに表示されます。ComponentDesigner クラスと ControlDesigner クラスは、IDesigner インターフェイスを実装し、デザイナの作成者が使用できる追加のデザイン時サポートを提供します。詳細については、これらのクラスのリファレンス ドキュメントを参照してください。
デザイン コンポーネントの作成の概要については、「イベントとデリゲート」を参照してください。
使用例
コンポーネントへのローカル参照を格納し、コンポーネントがダブルクリックされたときに既定のアクションを実行し、デザイナの動詞のメニュー コマンドを提供する IDesigner 実装の例を次に示します。
Imports System
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 Not (Me.Component Is 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
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()
{
}
}
}
#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(){}
};
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 2.0、1.1、1.0
参照
関連項目
IDesigner メンバ
System.ComponentModel.Design 名前空間
IRootDesigner
IDesignerHost
DesignerVerb クラス