2.7更改菜单命令的文本

xiaoxiao2021-02-28  14

更改菜单命令的文本

Visual Studio 2015 其他版本  

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

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

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

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

在.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>

在 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对象。

在 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); } }

生成项目并启动调试。 将显示 Visual Studio 的实验实例。

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

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

转载请注明原文地址: https://www.6miu.com/read-250216.html

最新回复(0)