連載:Windowsフォーム開発入門【Visual Studio 2010対応】 独自Windowsフォーム・クラスの活用 初音 玲2011/04/05 |
Page1
Page2
|
Windowsフォーム開発では、基本クラスであるFormクラス(System.Windows.Forms名前空間)から派生したクラス(図1参照)上にコントロールを配置し、プログラム・コードを記述することで、Windowsフォームの基本的な機能を活用できるようになっている。
図1 Windowsフォーム(Form1)の定義 |
Formクラスからの継承(Inherits)の記述は、Visual Basicの場合はForm1.Desiger.vbファイルに記述され、C#の場合はForm1.csファイルに記述される。
なお、.Designer.cs/.Designer.vbファイルはFormクラスの部分クラスを定義しているファイルで、フォーム・デザイナを使ってフォームに配置した各コントロールのコードが機械的に自動的に生成されるなど、手動で直接コードを書き換えない内容が記述されている。従って、継承の記述も.Designer.cs/.Designer.vbファイルにある方が理にかなっているように思う(C#はそのようにはなっていない)。
次のコードは、Formクラスからの継承が記述されている個所である。
|
||
リスト1 Windowsフォームの部分クラス(上:Form1.Designer.vb、下:Form1.cs) |
■Windowsフォーム・クラスの継承
Windowsフォームを継承して作成したクラス(以下、基本フォーム)をさらに継承して、別のWindowsフォーム・クラス(以下、派生フォーム)を定義できる。こうすることで、複数のWindowsフォームの共通機能は継承元の基本フォームにまとめて、それ以外の個別機能だけを継承先の派生フォームに実装すればよくなり、開発効率やメンテナンス性が向上する。
図2はその継承例である。この例では、基本フォームであるForm1クラスを継承して、派生フォームであるForm2クラスを定義している。
図2 Windowsフォーム(Form1)の継承による別のWindowsフォームの定義(Form2) |
●Windowsフォーム・クラスの継承手順
それでは、図2のようなWindowsフォームの継承を行う手順を説明しよう。
[ソリューション エクスプローラー]でプロジェクト項目を右クリックして、(表示されるコンテキスト・メニューから)[追加]−[新しい項目]メニューを選択する。これにより[新しい項目の追加]ダイアログが表示されるので、図3のように「継承されたフォーム」という項目を選択して[追加]ボタンをクリックする。すると、[継承ピッカー]ダイアログが表示されるので、継承元のWindowsフォーム・クラス(この例では「Form1」)を選択する。
[追加]ボタンをクリック |
図3 派生フォーム用のWindowsフォーム・クラス・ファイルの追加 |
この手順により、派生フォームとなるWindowsフォーム・クラスのファイルが、プロジェクトに追加される。
●フォーム・デザインの継承
Form1クラス(基本フォーム)を継承したForm2クラス(派生フォーム)がプロジェクトに追加されたら、Windowsフォーム・デザイナを用いてForm1クラスとForm2クラスにButtonコントロールを配置してビルドを実行すると、Form1クラスに配置したButtonコントロールはForm2クラスにも継承される。
図4はその例である。左がForm1クラスで、右がForm2クラスのフォーム・デザインだ。Form2クラスには、Form1に配置したButtonコントロールが表示されている。
図4 Windowsフォーム・デザインの継承(左:Form1クラス、右:Form2クラス) |
このようにWindowsフォーム・クラスを継承することで、フォーム・デザインも継承できる。この機能をうまく活用すれば、フォーム間でのデザインの共通化が実現しやすい。
●ロジックの継承
Windowsフォーム・クラスを継承した場合、フォーム・デザインだけではなく、クラスの中に記述したロジックも継承される。
実証するために、継承元のForm1クラスのButtonコントロールのClickイベントに対するイベント・プロシージャを定義してみよう(リスト2参照)。
|
||
リスト2 継承元クラスにイベント・プロシージャを定義した例(上:Form1.vb、下:Form1.cs) |
そして、スタートアップ・フォームをForm2クラスに切り替えて、Windowsアプリケーションを実行してみよう。すると、Form2イベント・プロシージャを記述していないにもかかわらず、図5のように、ボタンをクリックすればメッセージボックスが表示される。これは、Form2クラスにForm1クラスのロジックが継承されたためだ。
[Button1]ボタンをクリック |
図5 ロジックが継承された例 |
次のページでは、このWindowsフォームの継承をさらに突き進め、クラス・ライブラリ化して共有資産にする方法を説明する。
INDEX | ||
[連載]Windowsフォーム開発入門【Visual Studio 2010対応】 | ||
独自Windowsフォーム・クラスの活用 | ||
1.Windowsフォーム・クラスの継承 | ||
2.Windowsフォーム・クラス・ライブラリの継承 | ||
「Windowsフォーム開発入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -