第19章 サブメニューを持つメニュー


メインメニューのメニュー項目をクリックして、いきなり何かが実行されるというのはむしろ珍しいですね。通常はサブメニューが出てきます。



この章では、メインメニューに「ファイル(&F)」というメニュー項目を持ち、これをクリックすると「保存(&S)」「終了(&X)」というメニュー項目を持つサブメニューを作ってみます。

まずは、「保存」と「終了」のメニュー項目を作ります。このメニュー項目はクリックされると何らかの実行が起ります。

MenuItem miExit = new MenuItem("終了(&X)",
    new EventHandler(miExitClick));
MenuItem miSave = new MenuItem("保存(&S)",
    new EventHandler(miSaveClick));
次に、「ファイル」メニュー項目を作ります。これは、クリックされるとサブメニューが出てきますので、作り方がちょっと違います。次のバージョンのコンストラクタを使います。
public MenuItem (
	string text,
	MenuItem[] items
)
textは、メニュー項目のキャプションで、itemsは、このメニュー項目のサブメニューの項目が格納されているMenuItemオブジェクトの配列です。

では、サブメニュー項目に「保存」「終了」を持つ「ファイル」メニュー項目を作ってみましょう。

MenuItem miFile = new MenuItem("ファイル(&F)",
            new MenuItem[] { miSave, miExit });
そして、最後に「ファイル」メニュー項目をメインメニューに設定します。
Menu = new MainMenu(new MenuItem[] { miFile });
順番に見ていくと、特に難しい所は無いですね。

さて、フォームを閉じてプログラムを終了するには、FormクラスのCloseメソッドを使います。

public void Close ()
では、サンプルのプログラムを見てみましょう。
// menu02.cs

using System;
using System.Drawing;
using System.Windows.Forms;

class menu02
{
    public static void Main()
    {
        Application.Run(new MyForm());
    }
}

class MyForm : Form
{
    public MyForm()
    {
        Text = "猫でもわかるプログラミング";
        BackColor = SystemColors.Window;

        MenuItem miExit = new MenuItem("終了(&X)",
            new EventHandler(miExitClick));
        MenuItem miSave = new MenuItem("保存(&S)",
            new EventHandler(miSaveClick));

        MenuItem miFile = new MenuItem("ファイル(&F)",
            new MenuItem[] { miSave, miExit });

        Menu = new MainMenu(new MenuItem[] { miFile });
    }

    void miSaveClick(object sender, EventArgs e)
    {
        MessageBox.Show("「保存」が選択されました", Text,
            MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    void miExitClick(object sender, EventArgs e)
    {
        Close();
    }
}
実行結果は、次のようになります。




[C# フォーム Index] [C# コンソール Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 03/Nov/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。