2010-12-07 5 views
0

J'essaie de créer une structure de menu de base pour un addin 2008 studio visuel. Jusqu'à présent, je peux créer le premier menu de haut niveau que dans mon exemple ci-dessous j'ai appelé TOPMENU. J'ai du mal à comprendre comment ajouter des articles pour enfants à TOPMENU. J'ai essayé une variété de façons et ne peux pas le comprendre. Quelqu'un peut-il m'aider à terminer le code ci-dessous? Je reçois actuellement une exception de distribution invalide lorsque j'essaie de créer l'objet "a2" ci-dessous.Visual Studio Addin - Cant Créer des éléments de menu enfant

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) 
    { 
    } 
} 
} 
+0

Comment avez-vous créé plusieurs sous-menus et ligne de séparation ci-dessous TopMenu? – Kiquenet

Répondre

Questions connexes