IDesigner インターフェイス
アセンブリ: System (system.dll 内)

<ComVisibleAttribute(True)> _ Public Interface IDesigner Inherits IDisposable
[ComVisibleAttribute(true)] public interface IDesigner : 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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IDesigner プロパティ
IDesigner メソッド
IDesigner メンバ
- IDesignerのページへのリンク