チュートリアル: ビジュアル継承のデモンストレーション

ビジュアル継承により、基本フォームのコントロールを表示して、新しいコントロールを追加できます。 このチュートリアルでは、基本フォームを作成してクラス ライブラリにコンパイルします。 このクラス ライブラリを別のプロジェクトにインポートして、基本フォームから継承する新しいフォームを作成します。 このチュートリアルでは、次の作業を行う方法について説明します。

  • 基本フォームを含むクラス ライブラリ プロジェクトを作成します。

  • 基本フォームの派生クラスが変更できるプロパティを持つボタンを追加します。

  • 基本フォームの継承元により変更できないボタンを追加します。

  • BaseForm から継承したフォームを含むプロジェクトを作成します。

最終的には、このチュートリアルでは、継承されたフォーム上のプライベート コントロールとプロテクト コントロールの違いを示します。

注意事項

すべてのコントロールが基本フォームのビジュアル継承をサポートするわけではありません。 次のコントロールでは、このチュートリアルで説明するシナリオはサポートされません。

継承されたフォームのこれらのコントロールは、使用する修飾子 (privateprotected、または public) に関係なく、常に読み取り専用です。

基本フォームを含むクラス ライブラリ プロジェクトを作成する

  1. Visual Studio の [ファイル] メニューから [新規]>[プロジェクト] を選択し、 [新しいプロジェクト] ダイアログ ボックスを開きます。

  2. BaseFormLibrary という Windows フォーム アプリケーションを作成します。

  3. 標準の Windows フォーム アプリケーションではなく、クラス ライブラリを作成するには、ソリューション エクスプローラーで、BaseFormLibrary プロジェクト ノードを右クリックして、 [プロパティ] を選択します。

  4. プロジェクトのプロパティで、 [出力の種類][Windows アプリケーション] から [クラス ライブラリ] に変更します。

  5. [ファイル] メニューから、 [すべてを保存] を選択して、プロジェクトおよびファイルを既定の場所に保存します。

次の 2 つの手順では、基本フォームにボタンを追加します。 ビジュアル継承を示すには、Modifiers プロパティを設定して、ボタンに異なるアクセス レベルを付与します。

基本フォームの継承クラスから変更が可能なボタンを追加する

  1. デザイナーで Form1 を開きます。

  2. ツールボックス[すべての Windows フォーム] タブで、 [ボタン] をダブルクリックしてフォームにボタンを追加します。 マウスを使用し、ボタンを配置してサイズを変更します。

  3. [プロパティ] ウィンドウで、ボタンの次のプロパティを設定します。

    • Text プロパティを Say Hello に設定します。

    • (Name) プロパティを btnProtected に設定します。

    • Modifiers プロパティを Protected に設定します。 これにより、Form1 から継承するフォームを使用して、btnProtected のプロパティを変更できるようになります。

  4. [Say Hello] ボタンをダブルクリックして、Click イベントのイベント ハンドラーを追加します。

  5. イベント ハンドラーに次のコードを追加します。

    MessageBox.Show("Hello, World!")
    
    MessageBox.Show("Hello, World!");
    

基本フォームの継承元により変更できないボタンを追加する

  1. コード エディターの上にある Form1.vb の [デザイン]、Form1.cs の [デザイン]、または Form1.jsl の [デザイン] タブをクリックするか、F7 キーを押して、デザイン ビューに切り替えます。

  2. 2 番目のボタンを追加し、そのプロパティを次のように設定します。

    • Text プロパティを Say Goodbye に設定します。

    • (Name) プロパティを btnPrivate に設定します。

    • Modifiers プロパティを Private に設定します。 これにより、Form1 から継承するフォームを使用して btnPrivate のプロパティを変更できなくなります。

  3. [Say Goodbye] ボタンをダブルクリックして、Click イベントのイベント ハンドラーを追加します。 イベントの手順で、次のコード行を配置します。

    MessageBox.Show("Goodbye!")
    
    MessageBox.Show("Goodbye!");
    
  4. [ビルド] メニューから、 [BaseForm ライブラリのビルド] を選択してクラス ライブラリをビルドします。

    ライブラリがビルドされたら、作成したフォームから継承する新しいプロジェクトを作成できます。

基本フォームから継承したフォームを含むプロジェクトを作成する

  1. [ファイル] メニューから [追加] を選択し、 [新しいプロジェクト] を選択します。 [新しいプロジェクトの追加] ダイアログ ボックスが表示されます。

  2. InheritanceTest という Windows フォーム アプリケーションを作成します。

継承されたフォームを追加する

  1. ソリューション エクスプローラーで、InheritanceTest プロジェクトを右クリックし、 [追加] を選択して、 [新しいアイテム] を選択します。

  2. [新しいアイテムの追加] ダイアログ ボックスで、 [Windows フォーム] カテゴリを選択して (カテゴリのリストがある場合)、 [継承されたフォーム] テンプレートを選択します。

  3. 名前を既定の Form2 のままにして、 [追加] をクリックします。

  4. [継承ピッカー] ダイアログ ボックスで、継承元のフォームとして、BaseFormLibrary プロジェクトから Form1 を選択し、 [OK] をクリックします。

    これで、InheritanceTest プロジェクトに BaseFormLibrary のフォームから派生したフォームが作成されます。

  5. デザイナーで継承されたフォーム (Form2) がまだ開いていない場合は、ダブルクリックして開きます。

    デザイナーで、継承されたボタンには、上の隅に継承されたことを示すシンボル (Screenshot of the Visual Basic inheritance symbol.) があります。

  6. [Say Hello] ボタンを選択して、サイズ変更ハンドルを確認します。 このボタンは保護されているため、継承元が、移動、サイズ変更、キャプションの変更、およびその他の変更を実行できます。

  7. プライベートの [Say Goodbye] ボタンを選択して、サイズ変更ハンドルがないことを確認します。 また、 [プロパティ] ウィンドウでは、このボタンのプロパティが、変更できないことを示すグレー表示になっています。

  8. Visual C# を使用している場合:

    1. ソリューション エクスプローラーで、InheritanceTest プロジェクトの Form1 を右クリックして、 [削除] を選択します。 表示されたメッセージ ボックスで、 [OK] をクリックして削除を確認します。

    2. Program.cs ファイルを開き、行 Application.Run(new Form1());Application.Run(new Form2()); に変更します。

  9. ソリューション エクスプローラーInheritanceTest プロジェクトを右クリックし、 [スタートアップ プロジェクトに設定] を選択します。

  10. ソリューション エクスプローラーInheritanceTest プロジェクトを右クリックし、 [プロパティ] を選択します。

  11. InheritanceTest プロパティ ページで、 [スタートアップ オブジェクト] を継承されたフォームに設定します (Form2)。

  12. F5 キーを押してアプリケーションを実行し、継承されたフォームの動作を確認します。

次のステップ

ユーザー コントロールの継承はほぼ同じ方法で機能します。 新しいクラス ライブラリ プロジェクトを開き、ユーザー コントロールを追加します。 内在コントロールを配置し、プロジェクトをコンパイルします。 別の新しいクラス ライブラリ プロジェクトを開き、コンパイル済みのクラス ライブラリへの参照を追加します。 また、継承されたコントロールを、継承ピッカーを使用して ( [新しいアイテムの追加] ダイアログ ボックスから) プロジェクトに追加してみます。 ユーザー コントロールを追加し、Inherits ステートメント (Visual C# では:) を変更します。 詳細については、「方法: Windows フォームを継承する」を参照してください。

関連項目