デザイン時アーキテクチャ
.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
種類 |
Description |
---|---|
値エディターの実装に使用できる基本クラスを提供します。 |
|
開発環境で [ツールボックス] の管理および問い合わせを行うためのメソッドおよびプロパティを提供します。 |
|
ツールボックス項目の基本の実装を提供します。 |
System.ComponentModel.Design
種類 |
Description |
---|---|
スマート タグ パネルの作成に使用する項目のリストを定義する型の基本クラスを提供します。 |
|
コンポーネントをデザインするためのユーザー インターフェイスを提供します。 |
|
カスタム デザイナーを構築するための基本フレームワークを提供します。 |
|
ルート レベルのデザイナー ビュー テクノロジのサポートを提供します。 |
|
デザイン時に拡張プロバイダーを追加および削除するためのインターフェイスを提供します。 |
|
汎用の元に戻す/やり直し機能を指定します。 |
System.Windows.Forms.Design
種類 |
Description |
---|---|
UI 型エディターに対して、Windows フォームを表示したり、デザイン モードで PropertyGrid コントロールからドロップダウン領域にコントロールを表示したりするためのインターフェイスを提供します。 |
|
Control のデザイン モードでの動作を拡張する基本デザイナー クラス。 |
|
入れ子のコントロールをサポートし、スクロール メッセージを受け取る Control のデザイン モードでの動作を拡張し、ルート レベルのデザイン モード ビューを提供するための基本デザイナー クラス。 |
System.Windows.Forms.Design.Behavior
種類 |
Description |
---|---|
デザイナーのユーザー インターフェイスを管理します。 |
|
BehaviorService によって管理される Behavior オブジェクトを表します。 |
|
ユーザー インターフェイス関連の 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 インターフェイスによって、コンポーネントやデザイナーは、デザイン時に任意のコンポーネントによって公開される属性、イベント、およびプロパティをフィルター処理できます。デザイン モードで配置したコンポーネントの Site の AddService メソッドを使用してサービスとして追加できるクラスは、ITypeDescriptorFilterService インターフェイスを実装する必要があります。
ITypeResolutionService インターフェイスによって、デザイナーはアセンブリへの参照をプロジェクトに追加したり、名前によって型またはアセンブリを取得したりできます。また、指定したアセンブリのパスを取得できます。
DesignerActionService および DesignerActionUIService クラスは、カスタム デザイナーのスマート タグ機能を実装します。詳細については、「Windows フォームのデザイナー コマンドと DesignerAction オブジェクト モデル」を参照してください。
BehaviorService はデザイナーのユーザー インターフェイスを管理します。これにより、マウス関連のイベント、メニュー コマンド、OLE ドラッグ アンド ドロップ操作など、デザイン時のユーザー インターフェイス要素の操作が統一されます。詳細については、「動作サービスの概要」を参照してください。
CodeDomComponentSerializationService クラスは、一連のコンポーネントまたはシリアル化可能なオブジェクトをシリアル化ストアにシリアル化します。詳細については、「デザイナーのシリアル化の概要」を参照してください。
参照
処理手順
方法 : Windows フォームでデザイン時サポートにアクセスする
概念
Windows フォームのデザイナー コマンドと DesignerAction オブジェクト モデル