チュートリアル : ビジュアル継承のデモンストレーション
更新 : 2010 年 9 月
ビジュアル継承を使用すると、基本フォームのコントロールを表示して、新しいコントロールを追加できます。 このチュートリアルでは、基本フォームを作成してクラス ライブラリにコンパイルします。 このクラス ライブラリを別のプロジェクトにインポートし、基本フォームを継承する新しいフォームを作成します。 このチュートリアルでは、次の作業を行う方法について説明します。
基本フォームを含むクラス ライブラリ プロジェクトを作成します。
基本フォームの派生クラスで変更できるプロパティを持つボタンを追加します。
基本フォームの継承先では変更できないボタンを追加します。
BaseForm を継承するフォームを含むプロジェクトを作成します。
このチュートリアルの最後では、継承したフォーム上のプライベート コントロールとプロテクト コントロールの相違を示します。
注意
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については「設定の操作」を参照してください。
ヒント
基本フォームからのビジュアル継承をサポートしないコントロールもあります。 次のコントロールは、このチュートリアルで説明しているシナリオをサポートしません。
継承されたフォーム内のこれらのコントロールは、使用された修飾子 (private、protected、または public) に関係なく常に読み取り専用です。
シナリオの手順
最初に基本フォームを作成します。
基本フォームを含むクラス ライブラリ プロジェクトを作成するには
[ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックして [新しいプロジェクト] ダイアログ ボックスを開きます。
BaseFormLibrary という名前の Windows フォーム アプリケーションを作成します。 詳細については、「方法: 新しい Windows フォーム アプリケーション プロジェクトを作成する」を参照してください。
標準の Windows フォーム アプリケーションではなくクラス ライブラリを作成するには、ソリューション エクスプローラーの [BaseFormLibrary] プロジェクト ノードを右クリックし、[プロパティ] をクリックします。
プロジェクトのプロパティで、[出力の種類] を [Windows アプリケーション] から [クラス ライブラリ] に変更します。
[ファイル] メニューの [すべてを保存] をクリックして、プロジェクトおよびファイルを既定の場所に保存します。
基本フォームにボタンを追加する 2 つの手順を次に示します。 ビジュアル継承をデモンストレーションするために、Modifiers プロパティを設定して、ボタンごとに異なるアクセス レベルを指定します。
基本フォームの継承先で変更できるボタンを追加するには
デザイナーで Form1 を開きます。
ツールボックスの [すべての Windows フォーム] タブの [Button] をダブルクリックしてフォームにボタンを追加します。 マウスを使用してボタンの位置とサイズを調整します。
[プロパティ] ウィンドウで、ボタンの次のプロパティを設定します。
Text プロパティを Say Hello に設定します。
(Name) プロパティを btnProtected に設定します。
Modifiers プロパティを Protected に設定します。 これにより、Form1 を継承するフォームで、btnProtected のプロパティを変更できます。
[Say Hello] をダブルクリックして、Click イベントに対するイベント ハンドラーを追加します。
イベント ハンドラーに次のコード行を追加します。
MessageBox.Show("Hello, World!")
MessageBox.Show("Hello, World!");
基本フォームの継承先では変更できないボタンを追加するには
コード エディターの上部の [Form1.vb [デザイン]]、[Form1.cs [デザイン]]、または [Form1.jsl [デザイン]] タブをクリックするか、F7 キーを押して、デザイン ビューに切り替えます。
2 番目のボタンを追加して、プロパティを次のように設定します。
Text プロパティを Say Goodbye に設定します。
(Name) プロパティを btnPrivate に設定します。
Modifiers プロパティを Private に設定します。 これにより、Form1 を継承するフォームで、btnPrivate のプロパティを変更できなくなります。
[Say Goodbye] をダブルクリックして、Click イベントに対するイベント ハンドラーを追加します。 イベント プロシージャに次のコード行を追加します。
MessageBox.Show("Goodbye!")
MessageBox.Show("Goodbye!");
[ビルド] メニューの [BaseFormLibrary のビルド] をクリックして、クラス ライブラリを作成します。
ライブラリの作成後は、作成したフォームを継承する新しいプロジェクトを作成できます。
基本フォームを継承するフォームを含むプロジェクトを作成するには
[ファイル] メニューの [追加] を選択し、[新しいプロジェクト] をクリックして [新しいプロジェクトの追加] ダイアログ ボックスを開きます。
InheritanceTest という名前の Windows フォーム アプリケーションを作成します。 詳細については、「方法: 新しい Windows フォーム アプリケーション プロジェクトを作成する」を参照してください。
継承したフォームを追加するには
ソリューション エクスプローラーで、InheritanceTest プロジェクトを右クリックし、[追加] を選択し、[新しい項目] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、(カテゴリの一覧が表示されている場合は) [Windows フォーム] を選択し、[継承されたフォーム] テンプレートを選択します。
名前を既定の Form2 のままにして、[追加] をクリックします。
[継承ピッカー] ダイアログ ボックスで、継承元のフォームとして BaseFormLibrary プロジェクトの [Form1] を選択し、[OK] をクリックします。
これにより、BaseFormLibrary のフォームから派生したフォームが InheritanceTest プロジェクトに作成されます。
継承されたフォーム (Form2) がまだ開かれていない場合は、フォームをダブルクリックしてデザイナーで開きます。
デザイナーでは、継承したボタンの上隅にシンボル () が表示され、継承したボタンであることが示されます。
[Say Hello] をクリックし、サイズ変更ハンドルを確認します。 このボタンはプロテクトされているため、継承先で、移動、サイズ変更、キャプション変更などの変更を行うことができます。
プライベートの [Say Goodbye] をクリックすると、サイズ変更ハンドルが存在しないことがわかります。 さらに、[プロパティ] ウィンドウのボタンのプロパティが淡色表示され、変更できないことが示されます。
Visual C# を使用している場合は、次の手順を実行します。
ソリューション エクスプローラーで、InheritanceTest プロジェクトの Form1 を右クリックし、[削除] をクリックします。 表示されたメッセージ ボックスで、[OK] をクリックして削除を確定します。
Program.cs ファイルを開き、Application.Run(new Form1()); 行を Application.Run(new Form2()); に変更します。
ソリューション エクスプローラーで、InheritanceTest プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] をクリックします。
ソリューション エクスプローラーで、InheritanceTest プロジェクトを右クリックし、[プロパティ] をクリックします。
InheritanceTest のプロパティ ページで、[スタートアップ オブジェクト] に継承したフォーム (Form2) を設定します。
F5 キーを押してアプリケーションを実行し、継承されたフォームの動作を確認します。
次の手順
ユーザー コントロールの継承も、ほぼ同じ方法で実行できます。 新しいクラス ライブラリ プロジェクトを開き、ユーザー コントロールを追加します。 内在コントロールを配置し、プロジェクトをコンパイルします。 別の新しいクラス ライブラリ プロジェクトを開き、コンパイル済みのクラス ライブラリへの参照を追加します。 また、継承されたコントロールを [新しい項目の追加] ダイアログ ボックスを使ってプロジェクトに追加したり、継承ピッカーを使ったりします。 ユーザー コントロールを追加し、Inherits (Visual C# の場合は :) ステートメントを変更します。 詳細については、「方法 : Windows フォームを継承する」を参照してください。
参照
処理手順
参照
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2010 年 9 月 |
手順を修正。 |
カスタマー フィードバック |