コントロールの種類に関するアドバイス

.NET Framework は、新しいコントロールを開発して実装する機能を提供します。 使い慣れたユーザー コントロールだけでなく、独自の描画を実行するカスタム コントロールを作成することも、継承によって既存のコントロールの機能を拡張することもできるようになりました。 作成するコントロールの種類の決定が、混乱を招く可能性があります。 このセクションでは、継承できるさまざまな種類のコントロールの間の違いについて説明し、プロジェクトに合わせて選択する種類に関する注意点を示しています。

注意

Web フォームで使用するコントロールを作成する場合は、「カスタム ASP.NET サーバー コントロールの開発」を参照してください。

Windows フォーム コントロールからの継承

既存の Windows フォーム コントロールから継承されたコントロールを派生できます。 この方法では、すべての Windows フォーム コントロールの本質的な機能をすべて保持して、カスタム プロパティ、メソッド、またはその他の機能を追加することでその機能を拡張することができます。 たとえば、数値のみを受け付け、入力を自動的に値に変換できる TextBox から派生したコントロールを作成することができます。 このようなコントロールには、テキスト ボックスのテキストが変更されるたびに呼び出される検証コードが含まれ、値のプロパティを追加で持つことができます。 一部のコントロールでは、基本クラスの OnPaint メソッドをオーバーライドすることで、コントロールのグラフィカル インターフェイスにカスタムの外観を追加することができます。

次の場合に、Windows フォーム コントロールから継承します。

  • 必要とする機能のほとんどが、既存の Windows フォーム コントロールと同じです。

  • カスタムのグラフィカル インターフェイスが必要ないか、または既存のコントロールに対して新しいグラフィカルのフロント エンドをデザインします。

UserControl クラスを継承する

ユーザー コントロールは、共通のコンテナー内にカプセル化された Windows フォーム コントロールのコレクションです。 コンテナーは、各 Windows フォーム コントロールに関連付けられている固有の機能をすべて保持し、それらのプロパティを選択的に公開してバインドすることができます。 ユーザー コントロールの例として、データベースから顧客の住所データを表示する貯めに作成されたコントロールがあります。 このコントロールには、各フィールドを表示するいくつかのテキスト ボックスと、レコード間を移動するボタン コントロールが含まれます。 データ バインディングのプロパティは選択的に公開することができ、コントロール全体は、パッケージしてアプリケーション間で再利用できます。

次の場合に、UserControl クラスから継承します。

  • いくつかの Windows フォーム コントロールの機能を再利用可能な 1 つの単位に結合します。

Control クラスからの継承

コントロールを作成する別の方法は、Control から継承することで、実質的に一から作成する方法です。 Control クラスは、コントロール (イベントなど) によって必要とされる基本的な機能をすべて提供しますが、コントロール固有の機能やグラフィカル インターフェイスは提供しません。 Control クラスから継承することでコントロールを作成する場合は、ユーザー コントロールや既存の Windows フォーム コントロールから継承する場合よりも、はるかに多くの配慮と労力が必要です。 作成者は、コントロールの OnPaint イベントのコード、および必要とされる機能固有のコードを作成する必要があります。 ただし、より大きな柔軟性が可能になり、正確なニーズに合わせてコントロールをカスタムに調整することができます。 カスタム コントロールの例は、アナログ時計の外観や動作を複製する時計コントロールです。 内部タイマー コンポーネントからの Tick イベントに応答してカスタム描画が呼び出されて、時計の針が移動します。

次の場合に、Control クラスから継承します。

  • コントロールのカスタムのグラフィカル表現を提供します。

  • 標準コントロールでは使用できないカスタムの機能を実装する必要があります。

関連項目