解説実例で学ぶWindowsプログラミング第1回 MDI型Windowsアプリケーションの基礎開発デジタルアドバンテージ2004/11/10 |
|
|
MDIアプリケーションの実装
先ほどWindowsアプリケーションの「Kokyaku」プロジェクトを作成したが、これがMDIアプリケーションのメイン・ウィンドウとなる。プロジェクトの新規作成によりひな形として自動生成されたWindowsフォームを、MDIアプリケーションのメイン・ウィンドウに変更するには、[IsMdiContainer]プロパティを「True」に設定変更するだけだ。
さらにここで、メイン・ウィンドウのファイル名を「MainWindow.cs」に変更し、次のプロパティ設定を行おう。
- [(Name)]プロパティ:「MainWindow」
- [Text]プロパティ:「顧客.NET」
- [Size]プロパティ:「580, 480」
次の画面は、これらの設定を実際に行っているところである。
さらに、「MainWindow.cs」ファイル内のコードを次のように修正する。
- 修正前:
Application.Run(new Form1());
- 修正後:
Application.Run(new MainWindow());
以上で、MDIアプリケーションのメイン・ウィンドウの原型は完成だ。次に、このメイン・ウィンドウにメニュー・バーとステータス・バーを追加する。
■メニュー・バーとステータス・バーの追加
メニュー・バーやステータス・バーは、[ツールボックス]ウィンドウにそれぞれ、MainMenuコントロール、StatusBarコントロールとして登録されているので、これらのコントロールをメイン・ウィンドウのフォーム上にドラッグ&ドロップすれば追加できる。なお、追加したこれらのコントロールの名前は、IDEが自動的に決定した「mainMenu1」「statusBar1」のままにする。
次の画面は実際にメニュー・バーとステータス・バーをフォーム上に追加したところだ。
メニュー・バーとステータス・バーのメイン・ウィンドウへの追加 | ||||||||||||
[ツールボックス]ウィンドウにあるMainMenuコントロールとStatusBarコントロールをメイン・ウィンドウのフォーム上にドラッグ&ドロップすれば、フォームにメイン・メニューとステータス・バーを追加できる。 | ||||||||||||
|
そして、メニュー・バーのメニュー項目としては、次の表のものを入力した。
親項目 |
子項目 |
||
名前 | テキスト | 名前 | テキスト |
menuItemFile | ファイル(&F) | menuItemStartMenu | スタート メニュー(&M) |
- | |||
menuItemClose | 終了(&X) | ||
menuItemWindow | ウィンドウ(&W) | menuItemCascade | 重ねて表示(&C) |
menuItemTileHorizontal | 上下に並べて表示 | ||
menuItemTileVertical | 左右に並べて表示(&V) | ||
- | |||
menuItemAllClose | すべて閉じる(&A) | ||
menuItemHelp | ヘルプ(&H) | menuItemAboutBox | バージョン情報(&A)... |
メニュー・バーに追加したメニュー項目 | |||
メニュー・バーに追加されるメニュー項目の実体は、System.Windows.Forms名前空間のMenuItemオブジェクトである。表中の「名前」は、このオブジェクトの[(Name)]プロパティのことで、テキストは[Text]プロパティを意味する。 |
これらのほとんどのメニュー項目の内容は、Windowsアプリケーションでは一般的なものばかりなのであらためて説明する必要はないだろう。「スタート メニュー」というメニュー項目は通常は見慣れないものだが、これは業務処理を実行するメニュー画面を表示するための項目で、次回で詳しく解説する。
上の画面や表のテキストにある、これらのメニュー項目で注意してほしいのは、アンダーラインが記述された英数字である。例えば「ウィンドウ(W)」というテキストの中には「W」という英数字があるが、これはアクセス・キーと呼ばれる機能を設定したものだ。英数字に対してこのアクセス・キーを割り当てるには、「&W」のように、英数字の前にアンパサンド(&)を追加するだけである。アクセス・キーは、大文字のアルファベット、もしくは数字で表記し、その文字を半角の丸カッコで囲むのが慣例となっている。例えば、「W」というアクセス・キーは、「(&W)」と記述する。アクセス・キーの詳細は、.NET TIPS「Windowsアプリケーションでアクセス・キーを割り当てるには?」を参照してほしい。
メニュー項目を分離するライン(以降、分離ライン)は、メニュー項目として「-」(半角のハイフン)を入力すれば設定できる。実際に上記のメニュー項目では、「左右に並べて表示」というメニュー項目と「すべて閉じる」というメニュー項目の間に分離ラインを設定している。
上記のメニュー項目の(表の)「バージョン情報(&A)...」というテキストにある「...」は、このメニューを実行すると、何らかのダイアログなどが表示されることを意味する。これもWindowsアプリケーションの慣例である。ちなみに、「バージョン情報」というメニュー項目に限っては「...」が省略されることも多い。
最後にメニュー・バーをフォームに結び付けるために、フォームの[Menu]プロパティに「mainMenu1」を設定する。これにより、実際にフォームにメニュー・バーが組み込まれる(ちなみにステータス・バーは、何の設定も行うことなく、これまでの実装内容だけで組み込まれる)。また、[ウィンドウ]メニュー項目(=menuItemWindowメニュー項目)の[MdiList]プロパティを「True」に設定変更する。これにより、メニュー・バーの[ウィンドウ]の下に、表示中の子ウィンドウがリスト表示されるようになる。
以上で、メニュー・バーとステータス・バーの追加は完了である。
■子ウィンドウの追加
次にメニュー項目にある処理を実装したいが、MDIのメイン・ウィンドウだけで、子ウィンドウが1つもないとそれらの実装状況を確認するのに不都合だ(例えば、子ウィンドウを並べ替える処理を実装しても、子ウィンドウが存在しなければ並べ替えることは不可能である)。そこで一時的な仮のウィンドウとして、次の3つのウィンドウ(のソース・ファイル)を追加してみよう。
- 「StartMenuWindow.cs」(次回使用する)
- 「Form1.cs」(一時的な仮ウィンドウ)
- 「Form2.cs」(一時的な仮ウィンドウ)
これらのウィンドウを追加する手順は、次の画面のとおりだ。
[新しい項目の追加]ダイアログによるWindowsフォームの追加 | ||||||||||||
[新しい項目の追加]ダイアログを使って、新たなWindowsフォーム(この例では「StartMenuWindow.cs」)を追加する。 | ||||||||||||
|
子ウィンドウが用意できたら、メニュー項目の処理を実装していこう。
INDEX | ||
解説:実例で学ぶWindowsプログラミング | ||
第1回 MDI型Windowsアプリケーションの基礎開発 | ||
1.本連載で開発するWindowsアプリケーションについて | ||
2.MDIアプリケーション開発の準備 | ||
3.MDIアプリケーションへのコントロールの追加 | ||
4.MDIアプリケーションのメニュー項目処理の実装 | ||
「解説:実例で学ぶ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 -