C# 通过DTE在VS扩展中添加菜单项不会';t火点击处理程序

C# 通过DTE在VS扩展中添加菜单项不会';t火点击处理程序,c#,vsx,vs-extensibility,vspackage,C#,Vsx,Vs Extensibility,Vspackage,我试图用VS包(扩展名)中的菜单项动态填充解决方案右键单击菜单 我有一个名为“MyMenuName”的扩展菜单,我正在那里添加菜单项 以下是我使用的代码: DTE2 dte = GetService(typeof (DTE)) as DTE2; CommandBars cmdBars = dte.CommandBars as CommandBars; CommandBar owner = cmdBars["MyMenuName"];

我试图用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;
菜单项已成功添加,但从未执行。有什么想法吗

编辑:我在这里挖掘了一些代码:
似乎我的代码应该是正确的(假设他们的代码有效)

而不是使用
CommandBarControl
使用
CommandBarButton
。例如:

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

这将解决问题。

使用
CommandBarControl
而不是
CommandBarButton
。例如:

var button = (CommandBarButton)owner.Controls.Add(MsoControlType.msoControlButton);
button.Caption = "caption";
button.Enabled = true;
button.Click += OnButtonClick;`
这将解决问题