マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部
エバンジェリスト 高橋 忍

最終更新日 2006 年 3 月 3 日

このコンテンツのポイント

  • メニューストリップの基本的な構造を理解する。
  • メニューにコントロールを実装する方法を理解する。

今回紹介するコード

<Form1.cs>

C#
Public Form1()
{
        InitializeComponent();
        // Control Host
        ToolStripMenuItem calitem = new ToolStripMenuItem();
        calitem.Text = "&Select Date";
        MonthCalendar cal = new MonthCalendar();
        ToolStripControlHost controlhost = new ToolStripControlHost(cal);
        cal.DateSelected += delegate(object sender, DateRangeEventArgs e)
        {
                MessageBox.Show(e.Start.ToShortDateString() + "です");
        };
        calitem.DropDownItems.Add(controlhost);
        menuStrip1.Items.Add(calitem);
}
 

今回のシステム要件

  • Visual Studio 2005

目次

はじめに
作成するアプリケーションの概要
アプリケーションの作成
動作と解説
おわりに

Visual Basic の内容はこちらに掲載しています。
10 行でズバリ !! MenuStrip の応用 (VB)

 


はじめに

Windows Forms 2.0 で新しく追加された、ToolStrip はこれまでの Menu に変わる新しいコントロールです。ToolStrip ではさまざまなアイテムを簡単にメニューに追加し利用することが出来ます。ここでは、ToolStrip の中でも最も基本である、MenuStrip に Windows コントロールを追加する方法を取り上げます。

作成するアプリケーションの概要

ここでは、メニューストリップにカレンダーコントロールを追加し、カレンダーコントロールを押されたときの情報をメッセージで表示する機能を実装します。

アプリケーションの作成

まず、新規に Windows アプリケーションを作成します。Visual Studio 2005 の [ファイル] メニューをクリックし、[新規作成] をポイントして、[プロジェクト] をクリックします。 [新しいプロジェクト] ダイアログ ボックスが表示されたら、プロジェクトの種類として 「Visual C#」 の 「Windows」 を選択し、テンプレートとして 「Windows アプリケーション」 を選択します。 プロジェクト名などを任意に指定して [OK] をクリックします。

図 1. Windows アプリケーションを新規に作成する

これで、ベースとなる Windows フォームが出来ましたので、ここで新しい MenuStrip コントロールを実装します。ツールから MenuStrip コントロールをフォームにドラッグ & ドロップします。

図 2. MenuStrip の配置

ベースとなる ToolStrip コントロールが出来ましたので続けて機能を実装します。 「表示」 メニューから 「コード」 を選択してコード画面を表示します。すでに Form1 のコンストラクタである、 Form1() のメソッドが定義されていますので、ここに以下のコードを追加します。

C#
Public Form1()
{
        InitializeComponent();
        // Control Host
        ToolStripMenuItem calitem = new ToolStripMenuItem();
        calitem.Text = "&Select Date";
        MonthCalendar cal = new MonthCalendar();
        ToolStripControlHost controlhost = new ToolStripControlHost(cal);
        cal.DateSelected += delegate(object sender, DateRangeEventArgs e)
        {
                MessageBox.Show(e.Start.ToShortDateString() + "です");
        };
        calitem.DropDownItems.Add(controlhost);
        menuStrip1.Items.Add(calitem);
}
 

動作と解説

では、実行してみます。[Ctrl + F5] キーを押すか、[デバッグ] メニューの [デバッグなしで開始] をクリックします。メニュー項目のある Windows フォーム アプリケーションが起動しますので、「SelectDate」 メニューを選択します。するとカレンダーコントロールが表示されますので、どこかの日付を選択します。日付を選択するとメッセージ ボックスが表示され選択した日付をメッセージとして確認することが出来ます。

図 3. メニューからのカレンダーコントロールの起動

WinForm コントロールは、MenuStrip のアイテムではないため通常は、MenuStrip に登録することは出来ません。そこで用意されたのが、ToolStripControlHost オブジェクトです。ToolStripControlHost はコントロールのためのホストとして機能する ToolStrip オブジェクトです。コントロールを ToolStripControlHost にホストしてやることによって、MenuStrip などにコントロールを登録することが出来ます。もちろんコントロールは通常のコントロールのようにイベント処理を実装することが可能です。

おわりに

ToolStrip コントロールによって、これまでは実装が難しかった、コントロールの Menu への実装が簡単にできるようになりました。また ToolStripControlHost は MenuStrip だけでなくほかの ToolStrip 系のコントロールへアイテムとして登録することも可能です。ToolStrip のさまざまな機能を使ってユーザーが使いやすいアプリケーションを作ってみてください。


 

Code Recipe .NET Framework デベロッパー センター

ページのトップへ