更改命令的外观
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。
通过更改命令的外观,可以向用户提供反馈。 例如,您可能希望命令不可用时看起来不同。 您可以使命令可用或不可用、 隐藏或显示它们,或检查或取消选中那些在菜单上。
若要更改命令的外观,请执行以下操作之一︰
-
在命令文件中的表的命令定义中指定适当的标志。
-
实现IOleCommandTarget接口,并修改原始命令对象。
下列步骤显示如何查找和使用管理包框架 (MPF) 更新命令的外观。
若要更改菜单命令的外观
-
按照中的说明更改菜单命令的文本创建菜单项名为
New Text
。 -
在 ChangeMenuText.cs 文件中,添加以下 using 语句︰
using System.Security.Permissions;
-
在 ChangeMenuTextPackageGuids.cs 文件中,添加以下行︰
public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000"; // get the GUID from the .vsct file
-
在 ChangeMenuText.cs 文件中,替换为以下替换 ShowMessageBox 方法中的代码︰
private void ShowMessageBox(object sender, EventArgs e) { var command = sender as OleMenuCommand; if (command.Text == "New Text") ChangeMyCommand(command.CommandID.ID, false);} }
-
获取你想要从更新的命令olemenucommandservice 中对象,然后在 command 对象上设置适当的属性。 例如,下面的方法将指定的命令从 VSPackage 命令设置可用或不可用。 下面的代码使名为菜单项
New Text
后单击它不可用。public bool ChangeMyCommand(int cmdID, bool enableCmd) { bool cmdUpdated = false; var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; var newCmdID = new CommandID(new Guid(ChangeMenuTextPackageGuids.guidChangeMenuTextPackageCmdSet), cmdID); MenuCommand mc = mcs.FindCommand(newCmdID); if (mc != null) { mc.Enabled = enableCmd; cmdUpdated = true; } return cmdUpdated; } }
-
生成项目并启动调试。 Visual Studio 的实验实例应显示。
-
在工具菜单上,单击调用 ChangeMenuText命令。 此时该命令名是调用 ChangeMenuText,因此命令处理程序不会调用 ChangeMyCommand()。
-
在工具菜单现在应该看到新文本。 单击新文本。 现在,该命令应灰显。