Visual Basic でのコンポーネントの作成および使用

コンポーネントとは、System.ComponentModel.IComponent インターフェイスを実装するクラス、または IComponent を実装するクラスから直接または間接的に派生されたクラスです。 .NET Framework のコンポーネントは、再利用可能なオブジェクトで、他のオブジェクトとやり取りでき、外部リソースの制御やデザイン時サポートが備わっています。

コンポーネントの重要な特徴の 1 つが、コンポーネントはデザイン可能だということです。つまり、コンポーネントであるクラスは Visual Studio 統合開発環境で使用できます。 コンポーネントは、ツールボックスへの追加、フォームへのドラッグ アンド ドロップ、およびデザイン サーフェイスでの操作が可能です。 コンポーネントのデザイン時サポートは .NET Framework に組み込まれているため、コンポーネント開発者は追加の作業を行わずに基本のデザイン時機能を利用できます。

デザイン可能という点では、コントロール もコンポーネントに似ています。 しかし、コントロールはユーザー インターフェイスを持つのに対し、コンポーネントは持ちません。 コントロールをいずれかの基本コントロール クラスから派生する必要があります。Control または Control

コンポーネントの作成が必要な状況

デザイン サーフェイス (Windows フォーム デザイナー、Web フォーム デザイナーなど) で使用するクラスがユーザー インターフェイスを持たない場合は、そのクラスはコンポーネントにする必要があり、IComponent を実装するか、または IComponent を直接または間接的に実装するクラスから派生させます。

Component クラスおよび MarshalByValueComponent クラスは IComponent インターフェイスの基本実装です。 両クラスの主要な違いは、Component クラスは参照渡しでマーシャリングされるのに対し、IComponent は値渡しでマーシャリングされるということです。 実装のためのガイドラインを次に示します。

  • コンポーネントを参照渡しでマーシャリングする必要がある場合には、Component から派生します。

  • コンポーネントを値渡しでマーシャリングする必要がある場合には、MarshalByValueComponent から派生します。

  • 単一継承のためにいずれかの基本実装からコンポーネントを派生できない場合には、IComponent を実装します。

デザイン時サポートの詳細については、「コンポーネントのデザイン時属性」および「デザイン時サポートの拡張」を参照してください。

コンポーネントのクラス

System.ComponentModel 名前空間には、コンポーネントやコントロールの実行時動作およびデザイン時動作を実装するためのクラスが用意されています。 この名前空間には、属性コンバーターと型コンバーターの実装、データ ソースとの連結、およびコンポーネントのライセンス処理のための基本クラスとインターフェイスが含まれています。

中心となるコンポーネント クラスを以下に示します。

  • Component. IComponent インターフェイスの基本実装です。 このクラスによりアプリケーション間でオブジェクトを共有できるようになります。

  • MarshalByValueComponent. IComponent インターフェイスの基本実装です。

  • Container. IContainer インターフェイスの基本実装です。 このクラスは、いくつかのコンポーネントをカプセル化します (コンポーネントがない場合もあります)。

コンポーネントのライセンス処理に使用する主なクラスを以下に示します。

  • License. すべてのライセンスの抽象基本クラスです。 ライセンスは、コンポーネントの特定のインスタンスに対して付与されます。

  • LicenseManager. コンポーネントにライセンスを与え、LicenseProvider を管理するためのプロパティとメソッドを提供します。

  • LicenseProvider. ライセンス プロバイダーを実装するための抽象基本クラスです。

  • LicenseProviderAttribute. クラスと一緒に使用する LicenseProvider クラスを指定します。

コンポーネントの説明や永続化に一般的に使用するクラスを以下に示します。

  • TypeDescriptor. 属性、プロパティ、イベントなど、コンポーネントの特性に関する情報を提供します。

  • EventDescriptor. イベントに関する情報を提供します。

  • PropertyDescriptor. プロパティについての情報を提供します。

関連項目

参照

処理手順

方法 : Windows フォームでデザイン時サポートにアクセスする

方法 : デザイン モードでコントロールの外観と動作を拡張する

方法 : デザイン モードでコントロールのカスタム初期化を行う