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

更新 : 2007 年 11 月

.NET Framework には、新しいコンポーネントを開発および実装する機能が用意されています。一般的なユーザー コントロールに加えて、独自の描画を行うカスタム コントロールを作成できるようになりました。また、継承によって既存のコントロールの機能を拡張することも可能となりました。作成するコントロールの種類を決めるときに、判断に迷うことがあります。ここでは、継承が可能な各種のコントロール間の違いに焦点を当て、プロジェクト用にコントロールの種類を選択するときに考慮が必要な事柄を示します。

yah0tcw1.alert_note(ja-jp,VS.90).gifメモ :

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 クラスからの継承は、次の場合に適しています。

  • コンポーネントに独自のグラフィカル表示を使用する場合。

  • 標準のコントロールにはない、独自の機能を実装する必要がある場合。

Topic Location
方法 : UserControl クラスを継承する Windows フォーム コントロール
方法 : デザイン時にフォームの端に合わせてコントロールを配置する Windows フォーム コントロール
方法 : 複合コントロールを作成する Windows フォーム コントロール
チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ Windows フォーム コントロール
チュートリアル : Visual C# による Windows フォーム コントロールからの継承 Windows フォーム コントロール
方法 : コントロールにツールボックス ビットマップを指定する Windows フォーム コントロール
方法 : 既存の Windows フォーム コントロールから継承する Windows フォーム コントロール
方法 : [ツールボックスのカスタマイズ] ダイアログ ボックスにコントロールを表示する Windows フォーム コントロール
チュートリアル : Visual C# による複合コントロールの作成 Windows フォーム コントロール
チュートリアル : Visual Basic による複合コントロールの作成 Windows フォーム コントロール
方法 : Windows フォームのコントロールを作成する Windows フォーム コントロール
方法 : コントロール クラスを継承する Windows フォーム コントロール
チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 Windows フォーム コントロール
方法 : UserControl の実行時の動作をテストする Windows フォーム コントロール
チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 Windows フォーム コントロール
方法 : デザイン時機能を活用した Windows フォーム コントロールを作成する .NET Framework: アプリケーション開発
方法 : デザイン時機能を活用した Windows フォーム コントロールを作成する .NET Framework: アプリケーション開発
方法 : [ツールボックスのカスタマイズ] ダイアログ ボックスにコントロールを表示する Windows フォーム コントロール
チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 Windows フォーム コントロール
チュートリアル : Visual C# による Windows フォーム コントロールからの継承 Windows フォーム コントロール
方法 : コントロールにツールボックス ビットマップを指定する Windows フォーム コントロール
方法 : 既存の Windows フォーム コントロールから継承する Windows フォーム コントロール
チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ Windows フォーム コントロール
方法 : コントロール クラスを継承する Windows フォーム コントロール
方法 : UserControl の実行時の動作をテストする Windows フォーム コントロール
方法 : デザイン時にフォームの端に合わせてコントロールを配置する Windows フォーム コントロール
方法 : UserControl クラスを継承する Windows フォーム コントロール
方法 : Windows フォームのコントロールを作成する Windows フォーム コントロール
方法 : 複合コントロールを作成する Windows フォーム コントロール
チュートリアル : Visual Basic による複合コントロールの作成 Windows フォーム コントロール
チュートリアル : Visual C# による複合コントロールの作成 Windows フォーム コントロール
チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 Windows フォーム コントロール
チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 Windows フォーム コントロール
方法 : デザイン時にフォームの端に合わせてコントロールを配置する Windows フォーム コントロール
方法 : デザイン時機能を活用した Windows フォーム コントロールを作成する .NET Framework : アプリケーション開発
方法 : [ツールボックスのカスタマイズ] ダイアログ ボックスにコントロールを表示する Windows フォーム コントロール
チュートリアル : Visual C# による Windows フォーム コントロールからの継承 Windows フォーム コントロール
方法 : コントロールにツールボックス ビットマップを指定する Windows フォーム コントロール
方法 : 既存の Windows フォーム コントロールから継承する Windows フォーム コントロール
チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ Windows フォーム コントロール
方法 : コントロール クラスを継承する Windows フォーム コントロール
方法 : UserControl の実行時の動作をテストする Windows フォーム コントロール
方法 : UserControl クラスを継承する Windows フォーム コントロール
方法 : Windows フォームのコントロールを作成する Windows フォーム コントロール
方法 : 複合コントロールを作成する Windows フォーム コントロール
チュートリアル : Visual Basic による複合コントロールの作成 Windows フォーム コントロール
チュートリアル : Visual C# による複合コントロールの作成 Windows フォーム コントロール
チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 Windows フォーム コントロール
方法 : デザイン時機能を活用した Windows フォーム コントロールを作成する dv_fxdeveloping
方法: [ツールボックス アイテムの選択] ダイアログ ボックスにコントロールを表示する dv_mclictl
チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 dv_mclictl
チュートリアル : Visual C# による Windows フォーム コントロールからの継承 dv_mclictl
方法 : コントロールにツールボックス ビットマップを指定する dv_mclictl
方法 : 既存の Windows フォーム コントロールから継承する dv_mclictl
チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ dv_mclictl
方法 : コントロール クラスを継承する dv_mclictl
方法 : UserControl の実行時の動作をテストする dv_mclictl
方法 : デザイン時にフォームの端に合わせてコントロールを配置する dv_mclictl
方法 : UserControl クラスを継承する dv_mclictl
方法 : Windows フォームのコントロールを作成する dv_mclictl
方法 : 複合コントロールを作成する dv_mclictl
チュートリアル : Visual Basic による複合コントロールの作成 dv_mclictl
チュートリアル : Visual C# による複合コントロールの作成 dv_mclictl
チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 dv_mclictl
方法 : デザイン時機能を活用した Windows フォーム コントロールを作成する dv_fxdeveloping

参照

処理手順

方法 : シンプルな Windows フォーム コントロールを開発する

概念

さまざまなカスタム コントロール