SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――メニュー機能

(10) MenuコントロールとContextMenuコントロール

  • このエントリーをはてなブックマークに追加

ダウンロード Menu_WPF_VB.zip (71.1 KB)
ダウンロード Menu_WPF_CS.zip (65.4 KB)

  本連載ではSilverlightやWPFで使えるTipsを逆引き形式で紹介していきます。今回はメニュー機能(Menuコントロール,ContextMenuコントロール)のノウハウを解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 この連載ではSilverlightとWPFで使える、逆引きTipsを紹介していきます。今回は、メニュー機能(Menuコントロール, ContextMenuコントロール)について取り上げます。

 なお、今回はWPFのみのTipsとなりますあらかじめご了承ください。

対象読者

 Visual BasicまたはVisual C#、および、Silverlight/WPFのプロジェクト作成方法、XAMLについて基礎的な知識がある方を対象としています。

必要な環境

 下記を使ってプログラミングできる環境(筆者はこの環境で検証し執筆しています)。

  • Visual Studio 2010
  • Microsoft Silverlight 4 Tools for Visual Studio 2010

 Microsoft Silverlight 4 Tools for Visual Studio 2010は、Microsoftダウンロードセンターより入手できます。Visual Studio 2010が準備できない方は、Visual Studio 2008およびVisual Studio 2008 Silverlight Tools 3.0の組み合わせでも構いません。ただし、この場合は本連載で取り上げるTipsが動作しない可能性もあります。あらかじめご了承ください。

今回紹介するTips

  1. メニューを作成する
  2. セパレータを挿入する
  3. アクセスキーを設定する
  4. ショートカットキーを表示する
  5. メニューにコマンドを設定する
  6. アイコンを設定する
  7. チェックマークを付ける
  8. メニューを無効にする
  9. サブメニューが開かれたことを知る
  10. コンテキストメニューを使用する

01.メニューを作成する

 メニューを作成するには Menu クラスを使用し、メニューの要素を作成するには MenuItem クラスを使用します。

 MenuItemを入れ子にするとサブメニューを作成することができます。

 またメニューに表示する項目名は Header プロパティを使用して設定します。

 下記はメニューを作成する例です。

 XAMLだけでも作成することができますが、コードからメニューを作成する例も併せて記します。

メニューを作成する例
メニューを作成する例
XAMLの例
<Grid Name="Grid1">
    <Menu VerticalAlignment="Top">
        <MenuItem Header="ファイル">
            <MenuItem Header="終了" />
            <MenuItem Header="保存" />
            <MenuItem Header="終了" />
        </MenuItem>
        <MenuItem Header="編集">
            <MenuItem Header="コピー" />
            <MenuItem Header="切り取り" />
            <MenuItem Header="貼り付け" />
        </MenuItem>
    </Menu>
</Grid>
VBの例
'XAMLではなくコードでメニューを作成する場合は下記のようにします

Dim mainMenu As New Controls.Menu
Dim menuFile As New MenuItem()
Dim menuFileNew As New MenuItem()
Dim menuFileSave As New MenuItem()
Dim menuFileEnd As New MenuItem
Dim menuEdit As New MenuItem
Dim menuEditCopy As New MenuItem
Dim menuEditCut As New MenuItem
Dim menuEditPaste As New MenuItem
Dim menuEditSearchReplace As New MenuItem
Dim menuEditSearch As New MenuItem
Dim menuEditReplace As New MenuItem

mainMenu.VerticalAlignment = VerticalAlignment.Top

'[ファイル]メニュー項目の作成
menuFile.Header = "ファイル"
menuFileNew.Header = "新規作成"
menuFileSave.Header = "保存"
menuFileEnd.Header = "終了"
'[ファイル]メニューに[新規作成][保存][終了]項目を追加
menuFile.Items.Add(menuFileNew)
menuFile.Items.Add(menuFileSave)
menuFile.Items.Add(menuFileEnd)


'[編集]メニュー項目の作成
menuEdit.Header = "編集"
menuEditCut.Header = "切り取り"
menuEditCopy.Header = "コピー"
menuEditPaste.Header = "貼り付け"
menuEditSearchReplace.Header = "検索と置換"
menuEditSearch.Header = "検索"
menuEditReplace.Header = "置換"
'[編集]メニューに[切り取り][コピー][貼り付け][検索と置換]項目を追加
menuEdit.Items.Add(menuEditCut)
menuEdit.Items.Add(menuEditCopy)
menuEdit.Items.Add(menuEditPaste)
menuEditSearchReplace.Items.Add(menuEditSearch)
menuEditSearchReplace.Items.Add(menuEditReplace)
menuEdit.Items.Add(menuEditSearchReplace)

'メインメニューに[ファイル]メニューを追加
mainMenu.Items.Add(menuFile)
'メインメニューに[編集]メニューを追加
mainMenu.Items.Add(menuEdit)

Me.Grid1.Children.Add(mainMenu)
C#の例
// XAMLではなくコードでメニューを作成する場合は下記のようにします

System.Windows.Controls.Menu mainMenu =
    new System.Windows.Controls.Menu();
MenuItem menuFile = new MenuItem();
MenuItem menuFileNew = new MenuItem();
MenuItem menuFileSave = new MenuItem();
MenuItem menuFileEnd = new MenuItem();
MenuItem menuEdit = new MenuItem();
MenuItem menuEditCopy = new MenuItem();
MenuItem menuEditCut = new MenuItem();
MenuItem menuEditPaste = new MenuItem();
MenuItem menuEditSearchReplace = new MenuItem();
MenuItem menuEditSearch = new MenuItem();
MenuItem menuEditReplace = new MenuItem();

mainMenu.VerticalAlignment = VerticalAlignment.Top;

// [ファイル]メニュー項目の作成
menuFile.Header = "ファイル";
menuFileNew.Header = "新規作成";
menuFileSave.Header = "保存";
menuFileEnd.Header = "終了";
// [ファイル]メニューに[新規作成][保存][終了]項目を追加
menuFile.Items.Add(menuFileNew);
menuFile.Items.Add(menuFileSave);
menuFile.Items.Add(menuFileEnd);


// [編集]メニュー項目の作成
menuEdit.Header = "編集";
menuEditCut.Header = "切り取り";
menuEditCopy.Header = "コピー";
menuEditPaste.Header = "貼り付け";
// [編集]メニューに[切り取り][コピー][貼り付け][検索と置換]項目を追加
menuEdit.Items.Add(menuEditCut);
menuEdit.Items.Add(menuEditCopy);
menuEdit.Items.Add(menuEditPaste);
menuEditSearchReplace.Items.Add(menuEditSearch);
menuEditSearchReplace.Items.Add(menuEditReplace);
menuEdit.Items.Add(menuEditSearchReplace);

// メインメニューに[ファイル]メニューを追加
mainMenu.Items.Add(menuFile);
// メインメニューに[編集]メニューを追加
mainMenu.Items.Add(menuEdit);

this.Grid1.Children.Add(mainMenu);
ポイント

 メニューを作成するにはMenuクラスを使用し、メニュー項目を使用するにはMenuItemクラスを使用する。

 メニューに表示する項目名はHeaderプロパティで設定する。

 サブメニューを作成するにはMenuItemを入れ子にする。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
02.セパレータを挿入する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5769 2011/03/03 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング