0

ソリューションの右クリック メニューに VS パッケージ (拡張機能) のメニュー項目を動的に入力しようとしています。

「MyMenuName」という名前の拡張メニューがあり、そこにメニュー項目を追加しています。

私が使用するコードは次のとおりです。

        DTE2 dte = GetService(typeof (DTE)) as DTE2;

        CommandBars cmdBars = dte.CommandBars as CommandBars;

        CommandBar owner = cmdBars["MyMenuName"];

        CommandBarControl ctl1 = owner.Controls.Add(
            MsoControlType.msoControlButton, 1, string.Empty, 1, true);
        ctl1.Caption = "caption";
        ctl1.Enabled = true;

        //register on the Click event of the
        //button menu item
        CommandBarEvents buttonMenuItemHandler = (CommandBarEvents)dte.DTE.Events.CommandBarEvents[ctl1];

        buttonMenuItemHandler.Click += buttonMenuItemHandler_Click;

メニュー項目は正常に追加されましたが、クリック ハンドラーが実行されません。何か案は?

編集: ここでいくつかのコードを掘り下げました: https://netrepo.svn.codeplex.com/svn/trunk/AssemblyFactoryAddin/AssemblyFactoryAddin/GUIButton.cs そして、私のコードは正しいはずです (コードが機能すると仮定して)

4

1 に答える 1

3

CommandBarControl代わりに使用して作業するのではCommandBarButtonなく。例えば:

var button = (CommandBarButton)owner.Controls.Add(MsoControlType.msoControlButton);
button.Caption = "caption";
button.Enabled = true;
button.Click += OnButtonClick;`

これで問題は解決します。

于 2011-05-25T16:25:08.567 に答える