第18章 最も簡単なメニュー


やはり、フォームにはメニューが無いと変ですね。



今回は、最も簡単なメニューの作り方を紹介します。

メニューには、最初から「ファイル」とか「編集」などのように見えている部分があります。これをメインメニューといいます。そして、「ファイル」をクリックすると「上書き保存」などのメニューが現れてきます。これをサブメニューといいます。サブメニューからさらに下位ののサブメニューが出てくることもあります。

「ファイル」とか「編集」とか「上書き保存」などをメニュー項目といいます。

まずは、メニュー項目を作ります。これには、MenuItemクラスのコンストラクタを使うと簡単です。MenuItemクラスの継承関係は次のようになっています。

System.Object
 System.MarshalByRefObject 
  System.ComponentModel.Component
    System.Windows.Forms.Menu
     System.Windows.Forms.MenuItem
Menuクラスは抽象クラスです。抽象クラスについて忘れてしまった人は、コンソール編第44章を参照してください。

MenuItemクラスのコンストラクタは6つのオーバーロードバージョンがあります。

今回使用するバージョンは、次のようなものです。

public MenuItem (
	string text,
	EventHandler onClick
)
textは、メニュー項目のテキストです。

onClickは、このメニュー項目のClickイベントを処理するイベントハンドラです。

では、「テスト(&T)」(&Tは、Tに下線が付き、Tキーを押すとこの項目をクリックしたのと同じ効果が得られます。)というテキストを持ったメニュー項目を作ってみましょう。

MenuItem miTest = new MenuItem("テスト(&T)",
            new EventHandler(miTestClick));
こうすると、このメニュー項目がクリックされるとmiTestClickイベントハンドラが実行されます。

次に、フォームのMenuプロパティに、このメニュー項目を指定します。これには、MainMenuクラスのコンストラクタを使います。MainMenuクラスは、MenuItemクラスと同じ祖先を持ちます。

MainMenuクラスのコンストラクタには、3つのオーバーロードバージョンがありますが、今回使用するのは、次のようなものです。

public MainMenu (
	MenuItem[] items
)
itemsは、MainMenuに追加されるMenuItemオブジェクトの配列です。従って先ほど作ったメニュー項目を追加するには、
Menu = new MainMenu(new MenuItem[]{miTest});
とすれば、よいですね。ちなみにFormクラスのMenuプロパティは次のように定義されています。
public MainMenu Menu { get; set; }
では、サンプルを見てみましょう。
// menu01.cs

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

class menu01
{
    public static void Main()
    {
        MyClass mc = new MyClass();
        Application.Run(mc);
    }
}

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

        MenuItem miTest = new MenuItem("テスト(&T)",
            new EventHandler(miTestClick));
        Menu = new MainMenu(new MenuItem[]{miTest});
    }

    void miTestClick(object sender, EventArgs e)
    {
        MessageBox.Show("テスト成功!", "猫でもわかるプログラミング",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}
実行結果は、次のようになります。

「テスト」メニュー項目をクリックすると、「テスト成功」というメッセージボックスが出現します。



左のようなメッセージボックスが出現したら成功です。




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

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