特集:初めてのVisual Studioアドイン(中編)

Visual Studioアドインを実装しIDEで使う!

株式会社NTTデータ
技術開発本部 ソフトウェア工学推進センタ
瀬下 真吾
2009/03/31
Page1 Page2 Page3

コマンドをいろいろな場所に表示してみよう

そのほかのコンテキスト・メニューにコマンドを表示するには

 [ソリューション エクスプローラ]上のファイル項目のコンテキスト・メニュー以外にコマンドを表示するには、コード1-1の「 コマンドバー・コレクションからコマンドバーを取得する」で指定した「ラベル」を変更してください。

 具体的には次のコードで分かるように、「"Item"」の部分をほかのコマンドバーの「ラベル」に変更します。

// コマンドバー・コレクションからコマンドバーを取得する
CommandBar commandBar = commandBars["Item"];
                   
               ここを変更する
ファイル項目以外のコマンドバーにコマンドを表示するための変更点

 [ソリューション エクスプローラ]の各アイテムに割り当てられているラベルの名前を紹介しておきます。

図1-8 [ソリューション エクスプローラ]

 各番号のアイテムには、次のような「ラベル」が割り当てられています。

図中の番号 アイテムの種類 ラベル
ソリューション Solution
プロジェクト Project
propertiesフォルダ App Designer Folder
参照設定 Reference Root
フォルダ Folder
ファイル Item
表1-2 [ソリューション エクスプローラ]の各アイテムに割り当てられているラベル

 また、図1-9のようなVisual Studioの各ウィンドウにも、それぞれラベルが割り当てられています。

図1-9 Visual Studioの各ウィンドウ

図中の番号 ウィンドウの種類 ラベル
ツールボックス Toolbox
コードエディタ Code Window
エラー一覧 Error List
プロパティ PropertyBrowser
表1-3 各ウィンドウに割り当てられているラベル

 あとは、「"Item"」の部分をほかのラベルに変更するだけです。

 続いて、コンテキスト・メニューではなく、ツールバーにコマンドを表示する方法を説明します。

ツールバーにコマンドを表示するには

 Visual Studioには、[標準]や[書式設定]などの一般的なツールバーに加え、[ビルド]や[デバッグ]など、Visual Studio独自のツールバーが多数用意されています。ツールバーにコマンドを表示するには、コンテキスト・メニューと同様に、コード1-1の「 コマンドバー・コレクションからコマンドバーを取得する」で指定した「ラベル」を変更してください。

 例えば、図1-10のように[標準]ツールバーに[SampleAddin]コマンドを表示するには、ラベルに「Standard」を指定します。

// コマンドバー・コレクションからコマンドバーを取得する
CommandBar commandBar = commandBars["Standard"];
[標準]ツールバーに[SampleAddin]コマンドを表示するためのラベル

 次の画面は、指定後の実行例です。

図1-10 [SampleAddin]コマンドが追加された[標準]ツールバー

 代表的なツールバーに割り当てられているラベルを表1-4に示します。

ツールバーの種類 ラベル
標準 Standard
書式設定 Formatting
テキストエディタ TextEditor
レイアウト Layout
ビルド Build
デバッグ Debug
ヘルプ Help
表1-4 ツールバーに割り当てられているラベル

 最後に、メニューバーにコマンドを表示する方法を説明します。

メニューバーにコマンドを表示するには

 図1-11のようにメニューバーにコマンドを表示するには、コンテキスト・メニューと同様に、コード1-1の「 コマンドバー・コレクションからコマンドバーを取得する」で指定した「ラベル」を「MenuBar」に変更してください。

// コマンドバー・コレクションからコマンドバーを取得する
CommandBar commandBar = commandBars["MenuBar"];
メニューバーに[SampleAddin]コマンドを表示するためのラベル

 次の画面は、この変更後の実行例です。

図1-11 [SampleAddin]コマンドが追加されたメニューバー

 メニューバーはコンテキスト・メニューやツールバーとは違い、種類が1つしかありません。ただし、図1-12のように、[ファイル]や[表示]などのサブメニューにコマンドを表示したい場合は、実装が少し複雑になります。

図1-12 [SampleAddin]コマンドが追加された[ファイル]メニュー

 次のコードでは、サブメニューの1つである[ファイル]メニューにコマンドを追加しています。メニューバーのコマンドバーからサブメニューのコマンドバーを取得するときも、そのサブメニューに対応した「ラベル」を指定します。

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
  // Visual Studioのコマンド・コレクションを取得する
  // [SampleAddin]コマンドを作成する
  // Visual Studioのコマンドバー・コレクションを取得する
  ……省略……

  // -1 ラベルに「MenuBar」を指定して
  // コマンドバー・コレクションから
  // メニューバーのコマンドバーを取得する
  CommandBar menuBarCommandBar = commandBars["MenuBar"];

  // -2 ラベルに「ファイル」を指定して、
  // メニューバーのコマンドバーから[ファイル]メニューを取得する
  CommandBarPopup subMenu =
    ((CommandBarPopup)menuBarCommandBar.Controls["ファイル"]);

  // -3 [ファイル]メニューのコマンドバーを取得する
  CommandBar subMenuCommandBar = subMenu.CommandBar;

  // コマンドのコントロールを
  // [ファイル]メニューのコマンドバーに追加する
  command.AddControl(subMenuCommandBar, 1);
}
コード1-4 ConnectクラスのOnConnectionメソッド

 コードを見て分かるように、サブメニューのコマンドバーを取得するときのラベルは、メニューバーに表示されている日本語の文字列です。つまり、[ファイル]メニューを取得するにはラベルに「ファイル」を指定すればよいのです。ほかのサブメニューについても同様です。

 非常に分かりやすいのですが、1つ問題があります。そうです、日本語版のVisual Studioでないとアドインが正常に動作しません。英語版のVisual Studioであれば、「ファイル」ではなく「File」とする必要があります。アドイン・ウィザードによって自動生成されたひな型コードには、この問題を解決する国際化対応の仕組みが実装されているので、興味がある方はひな型コードを見てみてください。

 今回は具体的なアドインの作り方を紹介しました。次回はそれを配布するための方法を説明します。End of Article


 INDEX
  [特集]初めてのVisual Studioアドイン(前編)
  開発環境Visual Studioをカスタマイズせよ!
    1.Visual Studioの機能を拡張する3つの方法
    2.アドインを作成してみよう
    3.アドインを実行してみよう
    4.アドイン・プロジェクトの中身を見てみよう
 
  [特集]初めてのVisual Studioアドイン(中編)
  Visual Studioアドインを実装しIDEで使う!
    1.コンテキスト・メニューにコマンドを表示する
    2.コマンド実行時にXMLファイル編集画面を表示する
  3.コマンドをいろいろな場所に表示してみよう
 
  [特集]初めてのVisual Studioアドイン(後編)
  Visual Studioアドインを配布する!
    1.Visual Studioにアドインが登録される流れ/アドインの配布に必要な作業
    2.インストーラの作成手順


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間