[Visual Studio 2010 の Office 開発] コンテキストメニュー (Context Menu)


環境:
Visual Studio 2010 (RTM)
Office 2010

Visual Studio 2010 & Office 2010 UI 開発新機能

こんにちは。

だいぶ間が空いてしまいすみません。続きを記載します。

今日は、コンテキストメニュー (マウスの右ボタンをクリックすると表示されるメニュー) の話です。前回までの背景をおさえてしまえば、今日は 3 分で終了です。

前回と同じプロジェクト (Excel のアドインプロジェクト) を使用します。以下の通り設定されていた、ということを思い出してください。

  • リボン (XML) のアイテムを追加し、このリボン XML が有効になるように設定します
  • 追加されたリボン XML の XML 名前空間が新しくなっていたことを思い出してください
  • Test_onAction というハンドラ (メソッド) を作成しておきました。今回も、このハンドラをそのまま使います
  • ・・・Mso の話を思い出してください。Office が既定で組み込んでいるものを対象にするには、idMso, imageMso などの属性を使用しました

さて、前回のプロジェクトで追加した リボン XML に、今度は下記 (太字) の通り追加してみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  . . .

  <contextMenus>
    <contextMenu idMso="ContextMenuCell">
      <button id="MyButton" label="My Button"
        insertBeforeMso="HyperlinkInsert"
        onAction="Test_onAction" />
      <gallery id="galleryOne" label="My Gallery">
        <item id="item1" imageMso="HappyFace" />
        <item id="item2" imageMso="HappyFace" />
        <item id="item3" imageMso="HappyFace" />
        <item id="item4" imageMso="HappyFace" />
      </gallery>
    </contextMenu>
  </contextMenus>
</customUI>

前回と要点は同じです。

まず、コンテキストメニューはあちこちにあります。例えば、Word で文字列を選択してマウスの右ボタンを押すと表示されるコンテキストメニュー、Excel でセルを選んで右ボタンをクリックすると表示されるコンテキストメニューといった具合です。前回解説したように、それぞれに、既定のコントロール Id が設定されていて、今回は、上記の通り、Excel でセルを選択したときに表示できるメニュー (idMso="ContextMenuCell") を設定しています。

上記では、「ボタン」 (button) と「ギャラリー」 (gallery) を設定していますが、ボタンのほうは、insertBeforeMso="HyperlinkInsert" としているため、「既定の『ハイパーリンク』のメニューの手前に設定せよ」と指示していて、このボタンを選択すると、前回作成した Test_onAction メソッドが実行されるわけです。

F5 ボタンを押してデバッグ実行し、Excel でセルを右クリックしてメニューを表示すると、下図の通り表示がおこなわれます。(赤で囲った部分が、追加されたメニューです)

上図で MyGallery を選択すると、下図の通り、Office 組み込みの HappyFace アイコンが 4 つ表示されるのがわかります。

次回は、AutoScale を説明します。

 

関連ナンバー

 

Comments (0)

Skip to main content