Visual Studio Addin - Не могу создать дочерние элементы меню - PullRequest
0 голосов
/ 07 декабря 2010

Я пытаюсь создать базовую структуру меню для надстройки Visual Studio 2008.Пока что я могу создать первое меню верхнего уровня, которое в моем примере ниже я назвал TOPMENU.Я изо всех сил пытаюсь выяснить, как добавить дочерние элементы в TOPMENU.Я пробовал различные способы и не могу понять это.Может кто-нибудь помочь мне закончить код ниже?В настоящее время я получаю недопустимое исключение приведения при попытке создать объект "a2" ниже.

void IDTExtensibility2.OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
 _ApplicationObject = (DTE2)application;
 _AddInInstance = (AddIn)addInInst;

 if (connectMode == ext_ConnectMode.ext_cm_UISetup)
 {
  object[] contextGUIDS = new object[] { };
  Commands2 commands = (Commands2)_ApplicationObject.Commands;
  CommandBar cbMainMenu = ((CommandBars)_ApplicationObject.CommandBars)["MenuBar"];

  try
  {
   // ROOT MENU
   Command cmdProjectManagement = commands.AddNamedCommand2(_AddInInstance, "TOPMENU", "TOPMENU", "",
    true, null, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled,
    (int)vsCommandStyle.vsCommandStyleText, vsCommandControlType.vsCommandControlTypeButton);

   if (cmdProjectManagement != null)
    cmdProjectManagement.AddControl(cbMainMenu, cbMainMenu.Controls.Count);

   // SUB ITEM
   Command cmdCompiledAssemblies = commands.AddNamedCommand2(_AddInInstance, "TOPMENU_CompiledAssemblies", "Compiled Assemblies", String.Empty,
    true, null, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled,
    (int)vsCommandStyle.vsCommandStyleText, vsCommandControlType.vsCommandControlTypeButton);

   CommandBarControl a1 = cbMainMenu.Controls["TOPMENU"];
   CommandBarPopup a2 = (CommandBarPopup)a1;

   if (cmdCompiledAssemblies != null)
    cmdCompiledAssemblies.AddControl(a2.CommandBar, 1);
  }
  catch (Exception ex)
  {
  }
 }
}

1 Ответ

1 голос
/ 15 декабря 2010

Полная документация о том, как создавать всевозможные меню и панели инструментов здесь ..

http://www.mztools.com/articles/2005/mz2005003.aspx

...