デザイン時アーキテクチャ

.NET Framework のデザイン時アーキテクチャの概要を次の図に示します。

デザイン時アーキテクチャ

.NET Framework には、デザイン時環境でのコンポーネントの動作とユーザー インターフェイスをカスタマイズするためのインターフェイスとクラスが用意されています。デザイン時環境には、通常、コンポーネントを配置するためのフォーム デザイナと、コンポーネントのプロパティの値を構成するためのプロパティ ブラウザが含まれています。また、デザイン時環境には、デザイン時の機構によってアクセスおよび使用できるデザイン時サービスも用意されています。

.NET Framework では、カスタマイズしたデザイン時サポートを実装するために使用できるインターフェイスが定義されています。デザイン時サポートを拡張する主な機構には、デザイナ、型コンバータ、および UI 型エディタがあります。属性は、これらのデザイン時サポート プロバイダに属性を関連付ける型および型のメンバに適用されます。

属性

属性は、型または型のメンバをデザイン時の動作を拡張するクラスに関連付けます。DesignerAttribute は型をデザイナに関連付けます。TypeConverterAttribute は型または型のメンバを型コンバータに関連付けます。EditorAttribute は型または型のメンバを UI 型エディタに関連付けます。.NET Framework における属性の詳細については、「コンポーネントのデザイン時属性」および「属性とデザイン時サポート」を参照してください。

デザイナ

デザイナを使用すると、コンポーネントの外観、初期化、およびユーザーとの対話などのコンポーネントの動作をデザイン時にカスタマイズできます。デザイナによって、選択したコンポーネントのプロパティ ブラウザに示されているプロパティを追加、削除、および置換できます。デザイナでは、特定のコンポーネント イベントにリンクしたり、カスタム メニュー コマンドから実行したりできるユーザー定義メソッド DesignerVerb が用意されています。また、デザイン時環境によって用意されているサービスを利用することもできます。デザイナの詳細については、「カスタム デザイナ」を参照してください。

型コンバータ

型コンバータを実装すると、サポートしている型と、相互に値を変換できるその他のデータ型との間で値を変換できます。型コンバータには、デザイン時にプロパティ ブラウザでのプロパティの構成を可能にするロジックも用意されています。型コンバータによって、サポートする型のプロパティの標準値のリストを、デザイン時にプロパティ ブラウザで表示できます。また、型コンバータを使用して、デザイン時にプロパティを初期化する初期化コードも生成できます。型コンバータの実装の詳細については、「方法 : 型コンバータを実装する」を参照してください。

UI 型エディタ

UI 型エディタには、デザイン時に、プロパティの値を編集したり、プロパティの値を表示したりするためのカスタム ユーザー インターフェイス (UI) が用意されています。UI 型エディタは型に固有であり、デザイン時に、サポートしている型またはオーバーライド属性を持たない派生型のプロパティを構成するためのユーザー インターフェイスを提供します。UI 型エディタでは、プロパティを構成するための Windows フォームやドロップダウン構成インターフェイスを表示できます。UI 型エディタの実装の詳細については、「方法 : UI 型エディタを実装する」を参照してください。

注意

型コンバータと UI 型エディタはデザイン時と実行時の両方で使用されますが、デザイナはデザイン時にだけ使用されます。

デザイン関連の型

次の表は、デザイン関連の名前空間における重要なクラスの一部を示しています。

System.Drawing.Design

説明

UITypeEditor

値エディタの実装に使用できる基本クラスを提供します。

IToolboxService

開発環境で [ツールボックス] の管理および問い合わせを行うためのメソッドおよびプロパティを提供します。

ToolboxItem

ツールボックス項目の基本実装を提供します。

System.ComponentModel.Design

説明

DesignerActionList

スマート タグ パネルの作成に使用される項目のリストを定義する型の基本クラスを提供します。

DesignSurface

コンポーネントをデザインするためのユーザー インターフェイスを提供します。

IDesigner

カスタム デザイナを構築するための基本的なフレームワークを提供します。

IRootDesigner

ルート レベルのデザイナ ビュー テクノロジのサポートを提供します。

IExtenderProviderService

デザイン時に拡張プロバイダを追加および削除するためのインターフェイスを提供します。

UndoEngine

汎用の元に戻す/やり直し機能を指定します。

System.Windows.Forms.Design

説明

IWindowsFormsEditorService

UI 型エディタに対して、Windows フォームを表示したり、デザイン モードで PropertyGrid コントロールからドロップダウン領域にコントロールを表示したりするためのインターフェイスを提供します。

ControlDesigner

Control のデザイン モードでの動作を拡張する基本デザイナ クラス。

DocumentDesigner

入れ子のコントロールをサポートし、スクロール メッセージを受け取る Control のデザイン モードでの動作を拡張し、ルート レベルのデザイン モード ビューを提供するための基本デザイナ クラス。

System.Windows.Forms.Design.Behavior

説明

BehaviorService

デザイナ内でユーザー インターフェイスを管理します。

Behavior

BehaviorService によって管理される Behavior オブジェクトを表します。

Adorner

ユーザー インターフェイス関連の Glyph オブジェクトのコレクションを管理します。このクラスは継承できません。

Glyph

Adorner によって管理される単一のユーザー インターフェイス (UI) エンティティを表します。

デザイン時サービス

.NET Framework には、デザイナの機能を拡張できるデザイン時サービスのセットが用意されています。デザイン時サービスは、デザイン モードのコンポーネントの GetService メソッドを使用して取得できます。デザイン モードのプロジェクトからアクセスできる独自のサービス タイプを追加するには、IDesignerHost サービス インターフェイスの AddService メソッドを使用します。

IComponentChangeService インターフェイスによって、デザイナは、コンポーネントがデザイン時環境で変更、追加、または削除されたときに通知を受け取ることができます。

IDesignerEventService インターフェイスによって、デザイナは、デザイン時環境でデザイナが追加または削除されたり、現在選択しているコンポーネントが変更されたりしたときに通知を受け取ることができます。

IDesignerFilter インターフェイスによって、デザイナは、コンポーネントのプロパティ ブラウザに表示されるプロパティのセットを追加したり、フィルタ処理したりできます。

IDesignerHost インターフェイスには、サービスの追加や取得、デザイナの状態に関連するイベントの処理、デザイナが現在読み込まれているかどうかの検出、およびコンポーネントやデザイナ トランザクションの管理を行うためのインターフェイスが用意されています。デザイナ トランザクションによって、パフォーマンスを向上させるために、一連のアクションの実行が完了するまでデザイン時ビューの表示を更新しないモードで、一連のアクションを実行できます。また、コンポーネントによるトランザクションのアクションを元に戻し、以前の状態に復元するための機構も提供します。

IDesignerOptionService インターフェイスによって、デザイナは、Visual Studio .NET 環境の [ツール] メニューの [オプション] からアクセスできる Windows フォーム デザイナのプロパティ グリッドに一覧表示されるプロパティの値を取得および設定できます。DesignerOptionService クラスは、オプションの問い合わせの柔軟性を拡張します。

IDictionaryService インターフェイスによって、デザイナは、キーまたは値によってアクセスできるユーザー定義データのキー ベースのコレクションとキーのペアを使用できます。

IEventBindingService インターフェイスによって、デザイナは、コンポーネントが選択されているときに、デザイン時のプロパティ ブラウザでコンポーネントのイベントを公開できます。

IExtenderListService インターフェイスによって、デザイナは、デザイン時環境で現在アクティブである拡張プロバイダを取得できます。IExtenderProviderService インターフェイスによって、デザイナは、デザイン時に拡張プロバイダを追加または削除できます。

IHelpService インターフェイスによって、デザイナは、ヘルプ サービス コンテキストやヘルプ コンテキスト属性を作成および削除したり、キーワードや URL でヘルプ トピックを表示したりできます。

IInheritanceService インターフェイスによって、デザイナは派生クラスのコンポーネントを検索したり、各コンポーネントの継承属性を識別したりできます。

IMenuCommandService インターフェイスによって、デザイナはデザイン時環境のメニュー コマンドを検索、追加、削除、または呼び出すことができます。

IReferenceService インターフェイスによって、デザイナは、現在のデザイン モード プロジェクトで、参照によるオブジェクトの名前の取得、名前によるオブジェクトへの参照の取得、指定したコンポーネントの親への参照の取得、または指定した型のオブジェクトへの参照の取得を実行できます。

IResourceService インターフェイスによって、デザイナは指定した CultureInfo のリソース リーダーやリソース ライタを取得できます。

IRootDesigner インターフェイスによって、デザイナはルート デザイナ ビューをカスタム デザイナ ビューに置換できます。IRootDesigner インターフェイスは、コンポーネントのデザイナで実装されている必要があります。

ISelectionService インターフェイスによって、デザイナは、現在選択しているコンポーネントへの参照のセットを取得したり、コンポーネントまたはコンポーネントのセットの選択を設定したりできます。また、コンポーネントが選択されているかどうかを判別できます。

IServiceContainer インターフェイスによって、デザイナは他のコンポーネントやデザイナで使用できるサービスを追加または削除できます。

ITypeDescriptorFilterService インターフェイスによって、コンポーネントやデザイナは、デザイン時に任意のコンポーネントによって公開される属性、イベント、およびプロパティをフィルタ処理できます。デザイン モードで配置したコンポーネントの SiteAddService メソッドを使用してサービスとして追加できるクラスは、ITypeDescriptorFilterService インターフェイスを実装する必要があります。

ITypeResolutionService インターフェイスによって、デザイナはアセンブリへの参照をプロジェクトに追加したり、名前によって型またはアセンブリを取得したりできます。また、指定したアセンブリのパスを取得できます。

DesignerActionService および DesignerActionUIService クラスは、カスタム デザイナのスマート タグ機能を実装します。詳細については、「Windows フォームのデザイナ コマンドと DesignerAction オブジェクト モデル」を参照してください。

BehaviorService はデザイナでユーザー インターフェイスを管理します。これは、デザイン時におけるマウス関連のイベント、メニュー コマンド、OLE ドラッグ アンド ドロップ操作などの、ユーザー インターフェイス要素を操作する共通の方法を提供します。詳細については、「動作サービスの概要」を参照してください。

CodeDomComponentSerializationService クラスは、一連のコンポーネントまたはシリアル化可能なオブジェクトをシリアル化ストアにシリアル化します。詳細については、「デザイナのシリアル化の概要」を参照してください。

参照

処理手順

方法 : 型コンバータを実装する
方法 : UI 型エディタを実装する
方法 : デザイン時サービスにアクセスする
方法 : Windows フォームでデザイン時サポートにアクセスする

概念

属性とデザイン時サポート
Windows フォームのデザイナ コマンドと DesignerAction オブジェクト モデル
動作サービスの概要
デザイナのシリアル化の概要

その他の技術情報

デザイン時サポートの拡張
カスタム デザイナ