コントロールの種類に関するアドバイス
更新 : 2007 年 11 月
.NET Framework には、新しいコンポーネントを開発および実装する機能が用意されています。一般的なユーザー コントロールに加えて、独自の描画を行うカスタム コントロールを作成できるようになりました。また、継承によって既存のコントロールの機能を拡張することも可能となりました。作成するコントロールの種類を決めるときに、判断に迷うことがあります。ここでは、継承が可能な各種のコントロール間の違いに焦点を当て、プロジェクト用にコントロールの種類を選択するときに考慮が必要な事柄を示します。
メモ : |
---|
Web フォームで使用するコントロールを作成する場合は、「ASP.NET カスタム サーバー コントロールの開発」を参照してください。 |
Windows フォーム コントロールからの継承
既存の Windows フォーム コントロールから継承したコントロールを派生できます。この方法では、Windows フォーム コントロールの本来の機能をすべて保持しながら、カスタム プロパティやカスタム メソッドなどを追加して、それらの機能を拡張できます。たとえば、TextBox からの派生により、数値だけを受け入れて入力を自動的に値に変換するコントロールを作成できます。このようなコントロールには、テキスト ボックスのテキストが変更されたときに呼び出される検証コードを含めることができます。また、追加プロパティ Value も定義できます。一部のコントロールでは、基本クラスの OnPaint メソッドをオーバーライドすることにより、コントロールのグラフィカル インターフェイスに独自の外観を与えることもできます。
Windows フォーム コントロールからの継承は、次の場合に適しています。
必要な機能のほとんどが、既存の Windows フォーム コントロールの機能と同じである場合。
独自のグラフィカル インターフェイスが必要でない場合。または、既存のコントロールに新しいグラフィカル フロントエンドをデザインする場合。
UserControl クラスからの継承
ユーザー コントロールは、Windows フォーム コントロールのコレクションをコモン コンテナにカプセル化したものです。このコンテナには、各 Windows フォーム コントロールに関連付けられた本来の機能がすべて含まれ、任意に選択したプロパティを公開および連結できます。ユーザー コントロールの例として、データベースから顧客の住所データを取得して表示するコントロールがあります。このようなコントロールには、各フィールドを表示するための複数のテキスト ボックスと、レコード間で移動するためのボタン コントロールが含まれることがあります。データ バインディング プロパティは、必要なものを選択して公開できます。また、コントロール全体をパッケージ化して、アプリケーション間で再利用できます。
UserControl クラスからの継承は、次の場合に適しています。
- いくつかの Windows フォーム コントロールの機能を 1 つの再利用可能な単位に結合する場合。
Control クラスからの継承
コントロールを作成するもう 1 つの方法は、Control からの継承によって、コントロールを最初から作成することです。Control クラスには、コントロールで必要とされるすべての基本的な機能 (イベントなど) が定義されていますが、コントロール固有の機能やグラフィカル インターフェイスは定義されていません。Control クラスからの継承によってコントロールを作成する場合は、ユーザー コントロールや既存の Windows フォーム コントロールから継承する場合に比べて、より多くの検討と作業が必要です。コントロールの作成者は、必要とされる機能固有のコードに加えて、コントロールの OnPaint イベントのコードも記述する必要があります。ただし、この方法にはより高い柔軟性があるため、必要な条件を厳密に満たすように、コントロールを微調整できます。カスタム コントロールの例として、アナログ時計の外観や動作をまねた時計コントロールがあります。カスタム描画を実行することにより、内部のタイマ コンポーネントからの Tick イベントに応答して、時計の針を動かすことができます。
Control クラスからの継承は、次の場合に適しています。
コンポーネントに独自のグラフィカル表示を使用する場合。
標準のコントロールにはない、独自の機能を実装する必要がある場合。
参照
処理手順
方法 : シンプルな Windows フォーム コントロールを開発する