Visual Studio 的菜单和命令

命令用法

与Microsoft 办公室不同,这是一个包含许多独立产品的套件,Visual Studio 包含许多产品,每个产品都将其命令集贡献给全局 Visual Studio IDE。 IDE 通过根据上下文筛选用户可用的功能来管理数千个命令的复杂性。

当用户的上下文发生更改(例如从设计窗口切换到代码编辑窗口)时,与新上下文无关的功能将消失。 同时,新功能与相关的动态信息(如“属性”和“工具箱”选项)一起浮出水面。 用户不应注意到可用命令集的交换。 如果用户因命令出现或消失而分心或混淆,则 UI 设计需要调整。 用户的当前上下文始终以一种或多种方式指示,例如在 IDE 标题栏、属性窗口或“属性页”对话框中。

命令栏允许在 UI 中灵活使用。 Visual Studio 环境固有的唯一命令结构是主菜单和主命令栏,这既可以自定义,也可以隐藏。 其他命令栏根据应用程序的状态显示和消失。 工具窗口和文档编辑器还可以在其窗口边缘中包含嵌入工具栏。

基本准则

尽可能使用现有的共享命令、命令组和菜单。

由于命令通常基于上下文显示,因此使用现有的共享菜单和命令组可确保命令结构在上下文中的更改之间保持相对稳定。 重用共享命令并放置靠近相关共享命令的新命令也会降低 IDE 的复杂性,并创建更方便用户的体验。 如果需要定义新命令,请尝试将其放置在现有的共享命令组中。 如果需要定义新组,请先将其放置在靠近相关命令组的现有共享菜单中,然后再创建新的顶级菜单。

不要为每个命令创建图标。

在创建命令图标之前仔细思考。 仅应为以下命令创建图标:

  • 显示在默认工具栏上。

  • 用户可能会通过“ 自定义...” 对话框将用户添加到工具栏。

  • 在另一个 Microsoft 产品中具有与相同操作关联的图标。

限制添加键盘快捷方式

绝大多数用户都使用所有可用快捷方式的一小部分。 毫无疑问,不要将功能绑定到键盘快捷方式。 在添加新快捷方式之前,请与用户体验团队协作。

为命令提供默认菜单位置。

请注意,你的命令将由其他人自定义,并相应地对其进行设计。 没有隐藏命令之类的内容。 所有 Visual Studio 命令都显示在 “工具 > 自定义 ”对话框中、“命令窗口”、“自动完成”、“ 工具 > 选项 > 键盘 ”对话框和“开发工具环境”(DTE)。 确保为命令提供 .ctp 文件中的名称和工具提示,以便用户可以轻松找到它们。

不要复制嵌入工具栏上的共享命令。

将命令放置在靠近用户焦点区域的附近时非常有用。 执行此操作的一种方法是在工具窗口或文档编辑器顶部创建嵌入工具栏。 工具栏上放置的命令应特定于窗口中的内容区域。 不要复制这些工具栏上的共享命令。 例如,切勿在嵌入工具栏中放置“保存”图标。

内容和命令可见性

命令存在于以下范围: 环境层次结构文档。 了解每个范围,以便对命令放置有信心。

环境范围内的命令建立主上下文,并在多个上下文之间共享。 它们更改文档和工具窗口的可见性或排列方式。 环境范围中的命令包括“新建项目”、“连接到服务器”、“附加进程”、“剪切”、“复制”、“粘贴”、“查找”、“选项”、“自定义”、“新建窗口”和“查看帮助”。

层次结构范围中的命令管理 Visual Studio 中的层次结构,包括 ProjectTeam 和数据 它们与项目的子上下文(例如调试、生成、测试体系结构分析)相关。 层次结构范围中的命令包括“添加新项”、“新建查询”、“项目设置”、“添加新数据源”、“启动性能向导”和“新建关系图”。

文档范围中的命令对文档的内容(如代码、设计或工作项查询)执行操作。 它们还会针对工具窗口的视图进行操作,或者特定于该工具窗口。 文档范围命令还作用于特定于层次结构的文件对象,例如 从 Project 中删除。 文档范围中的命令包括“重构>重命名”、“创建工作项的副本”、“全部展开”、“全部折叠”和“创建用户任务”。

命令放置决策

决定创建命令后,需要确定其适当的位置以及是否创建键盘快捷方式。 按照此决策路径确定命令的放置位置:

Command placement decision chart

Visual Studio 中命令放置的决策路径

菜单中的命令放置

主菜单栏应是参与 UI 的任何特定于上下文的菜单包的命令的标准位置。 主菜单栏不同于其他命令结构,该环境使用该结构来控制哪些命令可见。 所有其他命令栏只是禁用上下文不足的命令,无论是放置在菜单还是工具栏上。

环境定义了一组内置于主菜单栏中的命令,这些命令在整个 IDE 和多个任务域中都是通用的。 无论将哪些 VSPackage 加载到环境中,这些命令始终可见。 尽管 VSPackages 可以扩展这组命令,但每个产品的命令集及其命令的放置是每个团队的责任。

Visual Studio 主菜单的结构可以细分为以下菜单类别:

核心菜单
  • 文件

  • 编辑

  • 视图

  • 工具

  • 窗口

  • 帮助

特定于项目的菜单
  • Project

  • 构建

  • 调试

特定于上下文的菜单
  • 数据

  • 测试

  • 体系结构

  • 分析

特定于文档的菜单
  • 形式

设计主菜单时,请遵循以下规则:
  • 在给定上下文中不要超过 25 个顶级项

  • 菜单的高度不应超过 600 像素。

  • 评估多个上下文中的主菜单,例如,在终极 SKU 和常规配置文件中。

  • 浮出控件菜单是可以接受的。

  • 浮出控件菜单应至少包含三个项目,不超过七个项目。

  • 浮出控件菜单应仅深入一级 - 某些 Visual Studio 菜单项具有级联子菜单,但不建议使用此模式。

  • 使用不超过六个分隔符。 分组应遵循下图:

    Guidelines for main menu grouping

  • 虽然不需要在图中添加每个分组,但添加其他分组受到限制。

  • 每个分组应有两到七个菜单项。

在添加新的顶级项之前,请考虑将命令置于现有顶级菜单中。 添加新的顶级菜单时,请务必将其置于正确的位置。 确定菜单是特定于项目、上下文还是文档。 保持顶级菜单的名称简洁,只使用一个单词。

核心菜单应预订其余命令。 文件、编辑和视图应始终在左侧,工具、窗口和帮助应始终在右侧。

上下文菜单

在上下文菜单中放置太多功能会导致难以学习的界面。 所有主要功能都应通过主菜单栏提供。 应将命令的位置与现有命令协调,以避免重复的命令。 对于上下文菜单,shell 定义应包括的标准菜单组,具体取决于上下文菜单是用于解决方案、项目节点还是项目项。

设计上下文菜单时,请遵循与主菜单相同的规则,此外:

  • 不要超过 25 个顶级菜单项。

  • 浮出控件菜单是可接受的,但不能超过一级深度 - 切勿使用级联浮出控件。

  • 使用不超过六个分隔符。

工具栏中的命令放置

常规工具栏

设计和排列工具栏时,请遵循以下标准:

  • 不要为每个按钮使用多个谓词。 一个按钮 = 一个操作。

  • 仅当需要用标签加固文本时,才会将文本与图标一起使用。

  • 只对一个会话中将多次切换的属性使用组合框。 否则,在其他地方公开该属性。

  • 组合框的宽度应等于框中最长项的宽度 + 30%。 例如,如果最长的项为 200 像素,则组合框应为 260 像素宽。

  • 限制分隔符的使用。 下拉列表旁边的分隔符的使用是一种反模式,因为下拉列表的形状本身充当视觉分隔符。

  • 图标组应包含三到六个图标。

  • 如果限定符导致多个有用的命令,请使用存储最后一个设置的拆分按钮:

    Split buttons in Visual Studio

    拆分按钮的示例。 左侧的六个命令可以改为适应单个按钮。

特定于产品的工具栏

每个产品都可以提供一个默认工具栏,其中包含常用命令和重要命令,并且每个产品的默认工具栏应在安装产品后首次启动 Visual Studio 时出现。

产品还应利用 IDE 提供的共享命令组和菜单。 每个共享命令组都放置在共享菜单中,旨在以有意义的方式为用户组织相关命令。 请务必利用此共享命令结构来降低复杂性。

全局工具栏

全局工具栏需要立即容纳一行。 创建新的全局工具栏时,请遵循该工具栏类型的准则。

常规工具栏指南:

  • 每个工具栏都有 24 个像素的公共控件(控制手柄、溢出)。

  • 每个工具栏按钮宽 22 像素,包括填充。 使图标成为拆分按钮会添加另一个 11 像素的宽度。

  • 允许跨工具栏复制命令。

    当特定文件类型处于活动状态并且当其他文件类型变为活动状态时,将显示特定于文档的工具栏

  • 文档特定的工具栏可能不超过 12 个按钮。

  • 工具栏的总宽度不得超过 300 像素。

  • 每种文件类型都可以有一个嵌入工具栏或一个特定于文档的全局工具栏,但不能同时具有两者。

    当设置特定上下文并倾向于长时间保持活动状态时,将显示特定于上下文的工具栏

  • 所有特定于上下文的工具栏的按钮限制为 18。

  • 如果大多数用户在上下文处于活动状态时不一致地使用此工具栏的命令,则不要将此工具栏与上下文相关联。

  • 确保退出上下文时工具栏消失。 这些工具栏都不应在启动时显示。

    没有上下文 的工具栏永远不会自动显示。 这些内容仅在用户激活时显示。 将最大宽度保持在 200 像素以下。

常规组织和 shell 定义组

使用现有的共享命令、命令组和菜单。 如果需要定义新命令,请尝试将其放置在现有的共享命令组中。 如果需要定义新组,请尝试将其放置在靠近相关命令组的现有共享菜单中,然后再创建新的顶级菜单。 这样可以降低命令复杂性,同时确保 IDE 中的命令放置一致。

通常显示在设计器样式文档窗口上下文中的共享 格式 菜单如下图所示:

Visual Studio Format menu with callouts

Visual Studio 中的菜单组

减少和重用命令

通常根据上下文显示命令,以减少用户在任何给定时间看到的命令数。 但是,还应重复使用现有的共享菜单和命令组,以确保命令结构在上下文中的更改之间保持相对稳定。

重用共享命令并放置靠近相关共享命令的新命令可降低 IDE 复杂性,并创建更方便用户的体验。

命名命令

命名约定

一致的命令命名至关重要,以便用户可以使用命令行或绑定到键盘快捷方式来查找和执行命令。 命令名称还有助于用户了解命令在工具栏或级联或上下文菜单中显示命令时的作用。

命名命令时:

  • 构造文本,使其易于本地化。 有关本地化文本的详细信息,请参阅 本地化最佳做法

  • 简洁明了。 命令不应使用三个以上的单词。

  • 使用标题大小写大写:每个单词的第一个字母应大写。 有关 Visual Studio 中的文本格式的详细信息,请参阅 “文本样式”。

  • 考虑将放置命令的位置。 它是在顶级菜单还是浮出控件中? 例如,在浮出控件中对对齐命令进行分组时,顶级命令应为“对齐”,浮出控件命令应为“Left”、“Right”、“Center”、“Justify”等。 将浮出控件命令命名为“左对齐”或“右对齐”是多余的。

    Visual Studio Format menu

将图标与命令配合使用

请谨慎使用图标与命令配对。 尽管将唯一图像与命令关联会加快用户识别该命令的能力,但图像过度使用时会出现视觉混乱和效率低下的情况。 以下规则在决定是否创建命令图标时有所帮助。

仅当以下命令时,才使用带有命令的图标:

  • 同一命令在另一个突出的 Microsoft 产品(例如其中一个Microsoft 办公室应用程序)中具有与其关联的图标。

  • 该命令将放置在默认工具栏中。

  • 该命令是一个特殊命令,用户可能会使用 “自定义...” 对话框添加到工具栏。

访问和快捷键

有两种类型的键盘键分配:

  • 访问键 (也称为快捷键)允许通过用于命令的菜单和对话 UI 中的每个标签进行键盘访问。 访问键主要用于辅助功能,分配给所有菜单和大多数对话框控件,不应被记住,只影响当前窗口,并且已本地化。

  • 快捷键 主要使用 Control (Ctrl) 和函数 (Fn) 键序列。 它们专为高级用户设计,有助于提高工作效率。 它们仅分配给最常用的命令,并允许在绕过主菜单时快速访问。 快捷键旨在记住,因此必须分配与配置文件方案一致的原因。 快捷键方案可能因配置文件而异。 用户可以通过工具>选项>键盘自定义快捷键

分配访问密钥

访问键由 Alt 和字母数字键组成。 将访问键分配给每个菜单项,而不例外。 遵循 Windows 和常见约定来分配访问密钥。 例如,文件新建的访问密钥应始终为 Alt、F、N>

不要使用单像素宽度字母(如“i”(以大写或小写形式)或小写的“l”,避免将字符与后代(g、j、p、q 和 y)一起使用,因为这些字符难以区分。

尽可能避免使用重复键。 如果无法避免重复,菜单系统会循环访问使用该键的所有命令来处理冲突。 例如,对于复制“N”访问键的“文件”菜单下的假设“Number”命令, Alt、F、N 将创建新文件, Alt、F、N 将执行“数字”命令。

分配快捷键

避免分配新的快捷键,因为它们不需要每个命令和对系统(和用户内存)征税(如果过度使用)。 客户体验改善计划(CEIP)中的数据指示 Visual Studio 用户仅使用集成快捷方式的一小部分。

定义快捷方式时,请遵循以下规则:

  • 使用 Control (Ctrl) 和函数 (Fn) 键序列。

  • 保留常用快捷方式。 维护最常用的快捷方式。

  • 使编辑器快捷方式易于键入。 将易于键入的快捷方式绑定到开发人员在编写代码时最需要的命令。 例如, Edit.InvokeSmartTag 需要具有一个快捷键,如 Ctrl+/,而不是 Alt+Shift+F10。

  • 努力实现一致的主题快捷方式。

  • 遵循 Windows 指南来确定要使用的修饰键。 对具有大规模效果的命令(例如应用于整个文档的命令)使用 Ctrl 组合键。 对扩展或补充标准快捷键操作的命令使用 Shift 键组合。 请勿使用 Ctrl+Alt 组合。

  • 删除多余的快捷方式。 如果你有一项旧功能,请考虑删除与极端不频繁(CEIP 数据少于 10 次)或中等不频繁(从 CEIP 数据少于 100 次)一起使用的快捷方式(如果访问密钥提供对相同命令的快速访问)。 例如:Alt、H、C 将打开帮助/内容。

    没有简单的方法来检查快捷方式可用性。 如果要添加快捷方式,请执行以下步骤:

  1. 检查 Visual Studio 2013 快捷方式列表,以确定是否有类似的命令用于分组。

  2. 转到 “工具 > 选项 > 环境 > 键盘 ”并测试快捷方式。 检查“应用以下其他键盘映射方案”下列出的每个键盘映射方案。检查常规、C#、VB 和 C++ 配置文件,因为这些配置文件共享唯一的快捷方式。 如果快捷方式未在任何这些位置映射,则快捷方式可用。