我正在尝试使用VS Package(Extension)中的菜单项动态填充解决方案右键菜单。
我有一个名为“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;
菜单项已成功添加,但Click处理程序永远不会被执行。有什么想法吗?
编辑:我在这里挖掘了一些代码:https://netrepo.svn.codeplex.com/svn/trunk/AssemblyFactoryAddin/AssemblyFactoryAddin/GUIButton.cs 似乎我的代码应该是正确的(假设他们的代码有效)
答案 0 :(得分:3)
而不是使用CommandBarControl
代替使用CommandBarButton
。 E.g:
var button = (CommandBarButton)owner.Controls.Add(MsoControlType.msoControlButton);
button.Caption = "caption";
button.Enabled = true;
button.Click += OnButtonClick;`
这将解决问题。