第5回 Windowsアプリケーションのデバッグ&リリース:連載簡単!Visual Studio .NET入門(2/5 ページ)
バグはどうやってつぶすのか? 完成したアプリケーションはどうやってリリースするのか? VS.NET入門の最終章。
2. VS.NETを駆使したプログラミング方法
右クリックで表示されるコンテキスト・メニューから[終了]を選択すると、フェード・アウトしながらアプリケーションが終了する機能を、VS.NETを使って「時計」アプリケーションに実装する。まずは、コンテキスト・メニューが表示されるようにしてみよう。
■コンテキスト・メニューの追加
コンテキスト・メニューは、[ツールボックス]ウィンドウの中にContextMenuコントロールとして初めから登録されている。次の画面のように、ContextMenuコントロールをフォーム上にドラッグ&ドロップすると、フォームのコンテキスト・メニューを追加することができる(なおここでは、追加したContextMenuコントロールの名前を「clockMenu」とした)。
コンテキスト・メニューの追加
[ツールボックス]ウィンドウの中にあるContextMenuコントロールをフォーム上にドラッグ&ドロップすることで、フォームにコンテキスト・メニューが追加できる。
(1)ContextMenuコントロールをフォーム上にドラッグ&ドロップする。
(2)追加されたContextMenuコントロールを選択する。
(3)[プロパティ]ウィンドウにある[(Name)]プロパティの値を「clockMenu」に変更する。
さらに、追加したContextMenuコントロールを、フォーム(=Displayクラス)にコンテキスト・メニューとして設定する必要がある。これには、次の画面のように、フォームの[ContextMenu]プロパティの値を「clockMenu」に設定すればよい。
コンテキスト・メニューのフォームへの登録
追加したContextMenuコントロールは、フォーム(=Displayクラス)にコンテキスト・メニューとして設定する必要がある。
(1)フォームを選択する。
(2)[ContextMenu]プロパティの値を「clockMenu」に設定する。
これにより、フォームを右クリックすると、コンテキスト・メニュー「clockMenu」が表示されるようになる。後はclockMenu自体のメニュー項目を追加する。本稿ではアプリケーションを終了するための[終了]項目を追加する。これも、次の画面のように、VS.NETのIDE上で簡単に追加することができる(追加した項目の名前は「menuItemClose」とした)。
メニュー項目の追加
Windowsフォーム・デザイナ上でContextMenuコントロールに文字を入力するだけで、メニュー項目を追加できる。
(1)ContextMenuコントロールをクリックして選択する。
(2)ContextMenuコントロールが選択されると、フォーム上に[ショートカット メニュー]という項目が現れるので、その[ショートカット メニュー]項目をクリックして選択する。すると、下に「ここへ入力」という空き項目が表示されるので、そこをクリックしてメニュー項目名(この例では、「終了(&X)」)を入力すると、そのメニュー項目がコンテキスト・メニューに追加される(ちなみに、メニュー項目にある「&X」はアクセス・キーと呼ばれる機能である。詳しくは「.NET TIPS:Windowsアプリケーションでアクセス・キーを割り当てるには?」を参照)。
(3)追加されたメニュー項目を選択した状態で、[プロパティ]ウィンドウにある[(Name)]プロパティの値を「menuItemClose」に変更する。
以上でコンテキスト・メニューの追加は完了だ。これが正常に動作するかを確認するために、いったんビルドを行い、プログラムを実行してみよう。マウスを右クリックすると、次の画面のように、正しくコンテキスト・メニューが表示されるはずだ。
コンテキスト・メニューの実行例
「時計」アプリケーションを実行して、フォーム上で右クリックすると、コンテキスト・メニューが表示される。
(1)ただし、[終了]をクリックしても、実際にはアプリケーションは終了しない。
しかし、終了処理をまだ実装していないので、[終了]をクリックしても実際にアプリケーションを終了させることはできない。次に、アプリケーションを実際に閉じる機能を実装していくことにしよう。
■アプリケーションを閉じる機能の実装
[終了]がクリックされたときに発生するClickイベントを処理するためのメソッド(Clickイベント・ハンドラ)を追加する。これには、次の画面のように、メニュー項目の[終了]をダブルクリックするだけでよい。
これにより、次のメソッドがフォーム(=Displayクラス)のソース・コードに追加される。
private void menuItemClose_Click(object sender, System.EventArgs e)
{
}
[終了]がクリックされると、このmenuItemClose_Clickメソッドが呼び出される。よって、先ほど調べたアプリケーションを終了する方法(フォームを閉じるメソッド=Form.Closeメソッド)を、このメソッドの中に記述すれば、[終了]がクリックされたときにフォームが閉じられ、アプリケーションが終了するようになる。具体的には次のようなコードを記述すればよい。
private void menuItemClose_Click(object sender, System.EventArgs e)
{
this.Close();
}
上記のコードにある「this」(C#の場合。VB.NETでは「Me」)は、自分自身のオブジェクト、つまり(Formクラスを継承した)Displayクラスのインスタンスを意味する。よってthis.Close()というコードは、DisplayオブジェクトのCloseメソッドを呼び出すという意味になる。
Copyright© Digital Advantage Corp. All Rights Reserved.