2013-03-28 2 views
0

У меня есть проект, который недавно был преобразован из студии 2008 года в 2010 году. Он значительно использует DSL. Я использовал DslProjectsMigrationTool, который поставляется с SDK. Хотя большая часть функциональности работает, у меня есть несколько проблем с меню. У меня есть настраиваемая панель инструментов с тремя кнопками, которые мой код. Однако обработчик событий, похоже, не работает. Я вернулся и проверил версию 2008 года, и это работало без проблем.Visual Studio расширение меню кнопка событие не работает

К сожалению, ни один из этих кодов не является моим собственным, и человек, который изначально написал его, перешел и недоступен для помощи.

В Commands.vsct У меня есть

<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <Commands package="guidPkg"> 
     <Menus> 
      <Menu guid="guidCmdSet" id="blueprintToolbar" priority="0x0000" type="Toolbar"> 
       <Parent guid="guidCmdSet" id="blueprintToolbar"/> 
       <CommandFlag>DefaultDocked</CommandFlag> 
       <CommandFlag>AlwaysCreate</CommandFlag> 
       <Strings> 
        <ButtonText>Blueprint Toolbar</ButtonText> 
       </Strings> 
      </Menu>   
     </Menus> 

     <Groups> 
      <Group guid="guidCmdSet" id="grpidTranslate" priority="0x0000"> 
       <Parent guid="guidCmdSet" id="blueprintToolbar" /> 
      </Group> 
     </Groups> 

     <Buttons> 
      <Button guid="guidCmdSet" id="cmdidReTranslateAllCmd" priority="0x0100" type="Button"> 
       <Parent guid="guidCmdSet" id="grpidTranslate" /> 
       <Icon guid="guidCmdSet" id="bmpPic1"/> 
       <CommandFlag>TextOnly</CommandFlag> 
       <Strings> 
        <ButtonText>&lt;Retranslate All&gt;</ButtonText> 
       </Strings> 
      </Button> 
      <Button guid="guidCmdSet" id="cmdidTranslateAllCmd" priority="0x0101" type="Button"> 
       <Parent guid="guidCmdSet" id="grpidTranslate" /> 
       <Icon guid="guidCmdSet" id="bmpPic1"/> 
       <CommandFlag>TextOnly</CommandFlag> 
       <Strings> 
        <ButtonText>&lt;Translate All&gt;</ButtonText> 
       </Strings> 
      </Button> 
      <Button guid="guidCmdSet" id="cmdidTranslateCurCmd" priority="0x0102" type="Button"> 
       <Parent guid="guidCmdSet" id="grpidTranslate" /> 
       <Icon guid="guidCmdSet" id="bmpPic1"/> 
       <CommandFlag>TextOnly</CommandFlag> 
       <Strings> 
        <ButtonText>&lt;Translate Current&gt;</ButtonText> 
       </Strings> 
      </Button> 
     </Buttons> 

    </Commands> 

    <Symbols> 
     <GuidSymbol name="guidCmdSet" value="Extern"> 

      <!--Group IDs--> 
      <IDSymbol name="grpidTranslate" value="0x1050"/> 

      <!--Command IDs--> 
      <IDSymbol name="cmdidTranslateAllCmd" value="0x9100"/> 
      <IDSymbol name="cmdidTranslateCurCmd" value="0x9101"/> 
      <IDSymbol name="cmdidReTranslateAllCmd" value="0x9102"/> 

      <IDSymbol name="blueprintToolbar" value="0x1000"/> 
      <IDSymbol name="bmpPic1" value="1"/> 
     </GuidSymbol> 

    </Symbols> 
</CommandTable> 

Тогда в CommandSetOverride.cs У меня есть

/// <summary> 
/// Constants relating to commands 
/// </summary> 
partial class Constants 
{ 
    public const string CLSID_StandardCommandSet97 = "5efc7975-14bc-11cf-9b2b-00aa00573819"; 

    #region Command Codes  

    const int cmdidTranslateAllCmd = 0x9100; 
    const int cmdidTranslateCurrentCmd = 0x9101; 
    const int cmdidReTranslateAllCmd = 0x9102; 

    #endregion 
    #region CommandIDs 

    public static readonly CommandID TranslateAllCommandID = 
    new CommandID(new Guid(Constants.BlueprintCommandSetId), cmdidTranslateAllCmd); 
    public static readonly CommandID TranslateCurrentCommandID = 
    new CommandID(new Guid(Constants.BlueprintCommandSetId), cmdidTranslateCurrentCmd); 
    public static readonly CommandID ReTranslateAllCommandID = 
    new CommandID(new Guid(Constants.BlueprintCommandSetId), cmdidReTranslateAllCmd); 

    #endregion 
} 

/// <summary> 
/// Additions to the blueprint command set for context menu items and extra commands. 
/// </summary> 
partial class BlueprintCommandSet 
{ 
    /// <summary> 
    /// Retrieves the available menu commands 
    /// </summary> 
    /// <returns>List of menu commands</returns> 
    protected override IList<MenuCommand> GetMenuCommands() 
    { 
    IList<MenuCommand> commands = base.GetMenuCommands(); 

    OleMenuCommand oleMenuCommand; 

    // Translate 
    if (null != MenuService) 
    { 
     MenuCommand menuCommand = new MenuCommand(new EventHandler(OnTranslateAll), Constants.TranslateAllCommandID); 
     MenuService.AddCommand(menuCommand); 

     menuCommand = new MenuCommand(new EventHandler(OnTranslateCurrent), Constants.TranslateCurrentCommandID); 
     MenuService.AddCommand(menuCommand); 

     menuCommand = new MenuCommand(new EventHandler(OnReTranslateAll), Constants.ReTranslateAllCommandID); 
     MenuService.AddCommand(menuCommand); 
    } 

    return commands; 
    } 

    #region Translation 
    /// <summary> 
    /// Handles the "ReTranslate All" toolbar button command. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void OnReTranslateAll(object sender, EventArgs e) 
    { 
    ReTranslateAll(); 
    } 

    /// <summary> 
    /// Handles the "Translate All" toolbar button command. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void OnTranslateAll(object sender, EventArgs e) 
    { 
    TranslateAll(false); 
    } 

    /// <summary> 
    /// Handles the "Translate Current" toolbar button command. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void OnTranslateCurrent(object sender, EventArgs e) 
    { 
    TranslateCurrent();   
    } 

    #endregion 
} 

Когда я запустить код либо установленную версию или при работе в улье кнопки появляются в на панели инструментов нет проблем, однако на них никогда не называет OntranslateAll или подобное. Любая помощь будет очень полезна.

+0

Я обнаружил, что CommandSetId Guid был явно использован в двух местах, а затем одна версия была обновлена ​​для версии 2010 года, а вторая - нет. С разными указателями событие было отправлено в неправильное место – user2207853

ответ

0

Я обнаружил, что CommandSetId Guid был явно использован в двух местах, а затем одна версия была обновлена ​​для версии 2010 года, а вторая - нет. С разными путями событие было отправлено в неправильное место

Смежные вопросы