2.7更改菜单命令的文本

来源:互联网 发布:28岁赚千万知乎 编辑:程序博客网 时间:2024/06/06 02:31

更改菜单命令的文本

Visual Studio 2015
其他版本
 

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。

下面的步骤演示如何通过更改菜单命令的文本标签IMenuCommandService服务。

更改具有 IMenuCommandService 的菜单命令标签

  1. 创建一个名为的 VSIX 项目MenuText与菜单命令名为ChangeMenuText。 有关详细信息,请参阅使用菜单命令创建扩展。

  2. 在.vstc 文件中添加TextChanges标记,用于您的菜单命令,如下面的示例中所示。

    XML
    <Button guid="guidChangeMenuTextPackageCmdSet" id="ChangeMenuTextId" priority="0x0100" type="Button">      <Parent guid="guidChangeMenuTextPackageCmdSet" id="MyMenuGroup" />      <Icon guid="guidImages" id="bmpPic1" />      <CommandFlag>TextChanges</CommandFlag>      <Strings>          <ButtonText>Invoke ChangeMenuText</ButtonText>      </Strings>  </Button>  
  3. 在 ChangeMenuText.cs 文件中,创建一个事件处理程序将在显示的菜单命令前调用。

    C#
    private void OnBeforeQueryStatus(object sender, EventArgs e)  {      var myCommand = sender as OleMenuCommand;      if (null != myCommand)      {          myCommand.Text = "New Text";                  }  }  

    此外可以通过更改来更新此方法中的菜单命令的状态Visible, Checked,和已启用属性OleMenuCommand对象。

  4. 在 ChangeMenuText 构造函数中,用创建的代码替换原始命令初始化和放置代码OleMenuCommand (而不是MenuCommand) 表示的菜单命令,请添加BeforeQueryStatus事件处理程序,并提供到菜单命令服务菜单命令。

    下面是什么它应如下所示︰

    C#
    private ChangeMenuText(Package package)  {      if (package == null)      {          throw new ArgumentNullException(nameof(package));      }      this.package = package;      OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;      if (commandService != null)      {          CommandID menuCommandID = new CommandID(MenuGroup, CommandId);          EventHandler eventHandler = this.ShowMessageBox;          OleMenuCommand menuItem = new OleMenuCommand(ShowMessageBox, menuCommandID);          menuItem.BeforeQueryStatus +=              new EventHandler(OnBeforeQueryStatus);          commandService.AddCommand(menuItem);      }  }  
  5. 生成项目并启动调试。 将显示 Visual Studio 的实验实例。

  6. 工具菜单上,您应该看到名为命令调用 ChangeMenuText

  7. 单击命令。 您应该看到消息框宣布推出 MenuItemCallback 已被调用。 关闭该消息框,您应看到在工具菜单上命令的名称现在是新文本

原创粉丝点击