第6回 Windowsアプリのデバッグ&リリース連載:簡単! Visual Studio 2013入門(2/5 ページ)

» 2014年09月29日 18時40分 公開
[かわさきしんじ, Insider.NET編集部,共著]

VS 2013を駆使したプログラミング方法

 右クリックで表示されるコンテキストメニューから[終了]を選択すると、フェードアウトしながらアプリが終了する機能を、VS 2013を使って「時計」アプリに実装する。まずは、コンテキストメニューが表示されるようにしてみよう。

コンテキストメニューの追加

 コンテキストメニューは、[ツールボックス]ウィンドウの中に([メニューとツール バー]カテゴリの)ContextMenuStripコントロールとして初めから登録されている。次の画面のように、ContextMenuStripコントロールをフォーム上にドラッグ&ドロップすると、フォームのコンテキストメニューを追加できる(なおここでは、追加したContextMenuStripコントロールの名前を「clockMenu」とした)。

コンテキストメニューの追加 コンテキストメニューの追加
[ツールボックス]ウィンドウの中にある([メニューとツール バー]カテゴリの)ContextMenuStripコントロールをフォーム上にドラッグ&ドロップすることで、フォームにコンテキストメニューを追加できる。
  (1) ContextMenuStripコントロールをフォーム上にドラッグ&ドロップする(すると、下のペーンに追加される)。
  (2) 追加されたContextMenuStripコントロールを選択する。
  (3) [プロパティ]ウィンドウにある[(Name)]プロパティの値を「clockMenu」に変更する。

 さらに、追加したContextMenuStripコントロールを、フォーム(=Displayクラス)にコンテキストメニューとして設定する必要がある。これには、次の画面のように、フォームの[ContextMenuStrip]プロパティの値を「clockMenu」に設定すればよい。

コンテキストメニューのフォームへの登録 コンテキストメニューのフォームへの登録
追加したContextMenuStripコントロールは、フォーム(=Displayクラス)にコンテキストメニューとして設定する必要がある。
  (1) [ポインター]を選択する。
  (2) フォームを選択する(フォームの内部は全面をLabelコントロールが占拠しているのでタイトルバーをクリックする)。
  (3) [ContextMenuStrip]プロパティの値を「clockMenu」に設定する。

 これにより、フォームを右クリックすると、コンテキストメニュー「clockMenu」が表示されるようになる。後はclockMenuコントロール自体のメニュー項目を追加する。本稿ではアプリを終了するための[終了]項目を追加する。これも、次の画面のように、VS 2013のIDE上で簡単に追加できる(追加した項目の名前は「menuItemClose」とした)。

メニュー項目の追加 メニュー項目の追加
Windowsフォームデザイナー上でContextMenuStripコントロールに文字を入力するだけで、メニュー項目を追加できる。
  (1) ContextMenuStripコントロールをクリックして選択する。
  (2) ContextMenuStripコントロールが選択されると、フォームの上部に[ContextMenuStrip]という項目が現れ、その下に「ここへ入力」という空き項目が表示されるので、そこをクリックしてメニュー項目名(この例では、「終了(&X)」)を入力する。これにより、そのメニュー項目がコンテキストメニューに追加される(ちなみに、メニュー項目にある「&X」はアクセスキーと呼ばれる機能である。詳しくは「.NET TIPS:Windowsアプリケーションでアクセス・キーを割り当てるには?」を参照)。
  (3) 追加されたメニュー項目を選択した状態で、[プロパティ]ウィンドウにある[(Name)]プロパティの値を「menuItemClose」に変更する。

 以上でコンテキストメニューの追加は完了だ。これが正常に動作するかを確認するために、いったんビルドを行い、プログラムを実行してみよう。マウスを右クリックすると、次の画面のように、正しくコンテキストメニューが表示されるはずだ。

コンテキストメニューの実行例 コンテキストメニューの実行例
「時計」アプリを実行して、フォーム上で右クリックすると、コンテキストメニューが表示される。
  (1) ただし、[終了]をクリックしても、実際にはアプリは終了しない。

 しかし、終了処理をまだ実装していないので、[終了]をクリックしても実際にアプリを終了させることはできない。次に、アプリを実際に閉じる機能を実装していくことにしよう。

アプリを閉じる機能の実装

 [終了]がクリックされたときに発生するClickイベントを処理するためのメソッド(Clickイベントハンドラー)を追加する。これには、次の画面のように、メニュー項目の[終了(X)]をダブルクリックするだけでよい。

[終了]項目のClickイベントハンドラーの追加 [終了]項目のClickイベントハンドラーの追加
Clickイベントハンドラーを追加するには、メニュー項目の[終了]をダブルクリックするだけだ。

 これにより、次のメソッドがフォーム(=Displayクラス)のソースコードに追加される。

private void menuItemClose_Click(object sender, EventArgs e)
{

}

空のmenuItemClose_Clickメソッド

 [終了]がクリックされると、このmenuItemClose_Clickメソッドが呼び出される。よって、先ほど調べたアプリを終了する方法(フォームを閉じるメソッド=Form.Closeメソッド)を、このメソッドの中に記述すれば、[終了]がクリックされたときにフォームが閉じられ、アプリが終了するようになる。具体的には次のようなコードを記述すればよい。

private void menuItemClose_Click(object sender, EventArgs e)
{
  // フォームを閉じる → アプリを終了する
  this.Close();
}

menuItemClose_Clickの実装

 上記のコードにある「this」(C#の場合。VBでは「Me」)は、自分自身のオブジェクト、つまり(Formクラスを継承した)Displayクラスのインスタンスを意味する。よって「this.Close()」というコードは、DisplayオブジェクトのCloseメソッドを呼び出すという意味になる。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。