フレッシュマン企画 連載
簡単!Visual Studio 2008入門

第6回 Windowsアプリケーションのデバッグ&リリース

デジタルアドバンテージ 一色 政彦
2009/06/17

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

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

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

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

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

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

コンテキスト・メニューのフォームへの登録
追加したContextMenuStripコントロールは、フォーム(=Displayクラス)にコンテキスト・メニューとして設定する必要がある。
  「ポイント」を選択する。
  フォームを選択する。
  [ContextMenuStrip]プロパティの値を「clockMenu」に設定する。

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

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

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

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

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

アプリケーションを閉じる機能の実装

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

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

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

private void menuItemClose_Click(object sender, EventArgs e)
{
}

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

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

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


 INDEX
  [フレッシュマン企画 連載]簡単!Visual Studio 2008入門
  第6回 Windowsアプリケーションのデバッグ&リリース
    1..NETプログラミングのための情報収集
  2.VS 2008を駆使したプログラミング方法
    3.VS 2008 IDEのウィザード機能の活用
    4.VS 2008によるアプリケーションのデバッグ方法
    5.完成したアプリケーションのリリースと配布

インデックス・ページヘ  「簡単!Visual Studio 2008入門」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間