2010-12-08 4 views
0

ont réussi à créer l'élément de menu en haut, en essayant de créer le premier élément enfant mais ne comparaît pas et aucune exception est lancée ...Visual Studio Addin - éléments du menu enfant ne figurant pas

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_Startup) 
    { 
     object[] contextGUIDS = new object[] { }; 
     Commands2 commands = (Commands2)_ApplicationObject.Commands; 
     CommandBars commandBars = (CommandBars)_ApplicationObject.CommandBars; 
     CommandBar cbMainMenu = commandBars["MenuBar"]; 

     try 
     { 
      // ROOT MENU 
      CommandBarPopup cbpProjectManagement = (CommandBarPopup)cbMainMenu.Controls.Add(MsoControlType.msoControlPopup, Type.Missing, Type.Missing, cbMainMenu.Controls.Count, true); 
      cbpProjectManagement.Caption = "ROOTMENU"; 

      // SUB ITEM 
      Command cmdCompiledAssemblies = _ApplicationObject.DTE.Commands.AddNamedCommand(_AddInInstance, "VSPM_CA", "CA", 
       String.Empty, true, 0, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled); 

      CommandBarControl cbcCompiledAssemblies = (CommandBarControl)cmdCompiledAssemblies.AddControl(cbpProjectManagement.CommandBar, 1); 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.ToString()); 
     } 
    } 
} 
+0

toute solution à ce sujet? – Kiquenet

Répondre

0

Je sais que ce sujet est vraiment vieux - mais j'ai eu le même problème et a finalement trouvé la solution:

Dans le QueryStatusMethod vous devez vérifier votre commande (qui vous avez construit ci-dessus) et le retour d'un statut valide, par exemple:

public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) 
    { 
     if(neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) 
     { 
      if (commandName == "MetatoolVSAddin.Connect.AddInAboutButton") 
      { 
       status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported|vsCommandStatus.vsCommandStatusEnabled; 
       return; 
      } 
     } 
    } 
Questions connexes