什么是类设计器?

借助 Visual Studio 中的 类设计器 工具,可以在 C#、Visual Basic 或C++项目中设计、可视化和重构类图。 类图显示了可视化设计图面中的代码元素及其关系,这有助于更好地了解项目结构并重新组织代码。

注释

类设计器在 .NET Core 和 .NET 5 及更高版本中不可用。

关于类图

下面是可以使用类图执行的操作的详细信息:

  • 设计:通过编辑类图来编辑项目代码。 添加新元素并删除不需要的元素。 更改反映在代码中。

  • 可视化:通过在关系图上查看项目中的类来了解项目的结构。 自定义图表,以便你可以专注于最关心的项目详细信息。 保存图表以供稍后用于演示或文档。

  • 重构:重写方法、重命名标识符、重构参数以及实现接口和抽象类。

查看类型和关系

类图显示类型的详细信息,例如其构成成员及其之间的关系。 这些实体的可视化是代码中的动态视图。 这意味着你可以在设计器中编辑类型,然后看到这些编辑反映在实体的源代码中。 同样,类图与对代码文件所做的更改保持同步。

注释

如果项目包含类图,并且项目引用了位于另一个项目中的类型,则类图在为该类型生成项目之前不会显示引用的类型。 同样,在为该实体重新生成项目之前,关系图不会显示对外部实体代码的更改。

类图工作流

类图可帮助你了解项目的类结构。 这些项目可能是由其他开发人员创建的,或者只需对自己创建的项目进行刷新。 可以使用类图来自定义、共享和向他人展示项目信息。

演示项目信息的第一步是创建显示要显示的内容的类图。 有关详细信息,请参阅 添加类图。 可以为一个项目创建多个类图,这些关系图可用于显示项目的不同视图、项目的类型的选定子集或类型的成员的选定子集。

除了定义每个类图显示的内容外,还可以更改显示信息的方式;有关详细信息,请参阅 自定义类图

微调了一个或多个类图后,可以将它们复制到Microsoft Office 文档并打印它们,或将其导出为图像文件。 有关详细信息,请参阅 将类图元素复制到Microsoft Office 文档打印类图将类图导出为图像

注释

类设计器不会跟踪源文件的位置,因此更改项目结构或移动项目中的源文件可能会导致类设计器失去对类型的跟踪,尤其是 typedef、基类或关联类型的源类型。 你可能会收到错误,如 类设计器无法显示此类型。 如果这样做,请将修改的源代码或重新定位的源代码再次拖动到类图中以重新显示它。

向项目添加类图

若要设计、编辑和重构类和其他类型,请将类图添加到 C#、Visual Basic 或C++项目。 若要可视化项目中代码的不同部分,请将多个类图添加到项目中。

无法从跨多个应用共享代码的项目创建类图。 若要创建 UML 类图,请参阅 创建 UML 建模项目和关系图

安装类设计器组件

如果尚未安装 类设计器 组件,请执行以下步骤进行安装。

  1. 从 Windows“开始”菜单中打开 Visual Studio Installer,或者从 Visual Studio 的菜单栏中选择 工具>“获取工具和功能”

    “Visual Studio 安装程序”随即打开。

  2. 如果已安装 Visual Studio,请单击选项中的 “修改”按钮。

  3. 选择 单个组件 选项卡,然后向下滚动到 代码工具 类别。

  4. 选择 类设计器,然后选择 修改

    Visual Studio 安装程序中类设计器组件的屏幕截图。

    Visual Studio 安装程序中类设计器组件的屏幕截图。

    类设计器 组件开始安装。

向项目中添加空白类图

  1. 解决方案资源管理器中,右键单击项目节点,然后选择“添加>新项。 或按 Ctrl+Shift+A。 如果出现一个只有“添加代码文件”选项的小窗口,请选择 显示所有模板 按钮。

    此时将打开"添加新项"对话框。

  2. 展开“常规”,然后从模板列表中选择“类图”。 对于 Visual C++ 项目,请查看 实用工具 类别,查找 类关系图 模板。

    注释

    如果未看到 类图 模板,按照步骤 安装 Visual Studio 类设计器 组件。 如本文前面所述,类设计器不适用于 .NET Core 和 .NET 5 及更高版本。

    类图随即在类设计器中打开,并在“解决方案资源管理器”中以一个带 .cd 扩展名的文件出现。 可以从 工具箱将形状和线条拖动到关系图中,或者从解决方案资源管理器拖动项目节点以添加该项目中的类。

若要添加多个类图,请重复此过程中的步骤。

在类图中显示完整项目的内容

打开空白类图,然后将项目节点从解决方案资源管理器拖动到类图图图面。 即会创建一个自动填充的类图。

重要说明

类设计器在 .NET Core 项目中不可用。

自定义类图

可以更改类图显示信息的方式。 可以在设计图面上自定义整个关系图或各个类型。

例如,可以调整整个类图的缩放级别,更改单个类型成员的分组和排序方式、隐藏或显示关系,以及移动图表上任意位置的单个或类型集。

注释

自定义形状在关系图上显示的方式不会更改关系图上表示的类型的基础代码。

包含类型成员(如类中的 属性 部分)的节称为隔离舱。 可以隐藏或显示单独的隔离舱和类型成员。

放大和缩小类图

  1. 类设计器中打开并选择类图文件。

  2. 类设计器 工具栏上,单击 放大缩小 按钮更改设计器图面的缩放级别。

    指定特定的缩放值。 可以使用 缩放 下拉列表或键入有效的缩放级别(有效范围介于 10% 到 400%之间)。

    注释

    更改缩放级别不会影响类图打印输出的规模。

自定义类型成员的分组和排序

  1. 类设计器中打开并选择类图文件。

  2. 右键单击设计图面上的空区域,指向 组成员

  3. 选择其中一个可用选项:

    • 按类型分组 将各个类型成员分隔为属性、方法、事件和字段的分组列表。 单个组依赖于实体定义:例如,如果尚未为该类定义事件,则类不会显示任何事件组。

    • “按访问分组”根据类型成员的访问修饰符,将各个成员组织到一个分组列表中。 例如,Public 和 Private。

    • 按字母顺序排序 将构成实体的项显示为单个按字母顺序排列的列表。 列表按升序排序。

隐藏类型中的隔离舱

  1. 类设计器中打开并选择类图文件。

  2. 右键单击要自定义的类型中的成员类别(例如,选择类中的 方法 节点。

  3. 单击 隐藏隔间

    选定的隔离舱将从类型容器中消失。

隐藏类型中的各个成员

  1. 类设计器中打开并选择类图文件。

  2. 右键单击要隐藏的类型中的成员。

  3. 单击“隐藏

    所选成员从类型容器中消失。

针对类型显示隐藏的隔离舱和成员

  1. 类设计器中打开并选择类图文件。

  2. 右键单击具有隐藏隔离舱的类型的名称。

  3. 单击 显示所有成员

    所有隐藏的隔离舱和成员将显示在类型容器中。

隐藏关系

  1. 类设计器中打开并选择类图文件。

  2. 右键单击要隐藏的关联或继承行。

  3. 单击 隐藏关联行的,然后单击 隐藏继承行

  4. 单击 显示所有成员

    所有隐藏的隔离舱和成员将显示在类型容器中。

显示隐藏的关系

  1. 类设计器中打开并选择类图文件。

  2. 右键单击具有隐藏的关联或继承的类型。

    单击 显示关联行的所有成员,然后单击 显示基类显示继承行的派生类

从类图中删除形状

可以从类图中删除类型形状,而不会影响该类型的基础代码。 从类图中删除类型形状仅影响该关系图:定义类型的基础代码以及显示该类型的其他关系图不会受到影响。

  1. 在类图上,选择要从关系图中删除的类型形状。

  2. 在“编辑”菜单上,选择“从关系图中删除”。

    类型形状和连接到形状的任何关联或继承线不再显示在关系图上。

删除类型形状及其基础代码

  1. 右键单击设计图面上的形状。

  2. 从上下文菜单中选择 删除代码

    形状从关系图中删除,其基础代码将从项目中删除。

将类图元素复制到 Microsoft Office 文档

可以将形状从 .NET 类图(.cd 文件)复制到其他文档。 可以基于将要粘贴到的文档的类型获取形状或其底层代码的拷贝。 若要从建模项目中的 UML 类图复制形状,请参阅 将图表导出为图像

复制单个元素

右键单击形状并选择 复制图像

复制多个元素

  1. 选择要复制的图表上的形状。

  2. 右键单击选择内容,然后选择“复制图像”

在类图中复制所有元素

  1. 右键单击关系图面,然后选择“全选”或按 Ctrl+A。

  2. 在“编辑”菜单上,选择 复制图片

还可以选择“复制”而不是“复制图像”。 “复制”会将图像复制为常规位图。 复制映像 将图像复制为基于矢量的图像,这更适用于大多数 Office 应用程序。

将类图导出为图像

若要导出从项目中的代码创建的类图,请将该关系图另存为图像。 如果想要改为导出 UML 类图,请参阅将关系图导出为图像

导出关系图

  1. 打开你的类图 (.cd) 文件。

  2. 类图 菜单或图表界面快捷菜单中,选择 导出图表为图像

  3. 选择关系图。

  4. 选择所需的格式。

  5. 选择 导出 以完成导出。

若要自动更新从其他文档链接的导出图像,请再次在 Visual Studio 中导出关系图。

可以使用 Visual Studio 的打印功能打印类图。

打印类图

  1. 打开类图。

  2. 单击“文件”菜单上的“打印”。

随即将打印整个类图。 可能需要调整 “页面设置”对话框中的设置才能以适当大小打印。

向类图添加注释

可以使用注释形状批注类图。 批注形状有一个属性,Text,你可以在其中键入文本。 注释形状仅存在于图表图面上,不在代码中。

注释位于“类设计器”中的类图视图上。 如果将第二个类图打开到同一个项目上,则第一个视图中创建的注释不可见。 如果删除图表,也会删除它包含的所有注释。

您可以调整批注形状的大小,但不能更改其外观的其他方面,例如其背景色、字体或字号。

添加注释

  1. 类设计器工具箱中的注释 拖到类图上。

  2. 单击图表中新批注的形状,然后输入您想要的文本。

使用“类图”和“类详细信息”窗口中的鼠标和键盘快捷方式

除了鼠标(或其他指向设备)外,还可以使用键盘在 类设计器类详细信息 窗口中执行导航作。

在类设计器中使用鼠标

类图支持以下鼠标操作:

鼠标组合 上下文 描述
双击 形状元素 打开代码编辑器。
双击 Lollipop 连接器 展开/折叠棒糖形。
双击 棒糖形连接器标签 调用“显示接口”命令。
鼠标滚轮 类图 垂直滚动。
Shift + 鼠标滚轮 类图 水平滚动。
Ctrl + 鼠标滚轮 类图 缩放。
Ctrl+Shift + 单击 类图 缩放。

在“类详细信息”窗口中使用鼠标

通过使用鼠标,可按以下列方式更改“类详细信息”窗口外观及其显示的数据

  • 单击任何可编辑单元格即可编辑该单元格的内容。 所做的更改将反映在数据存储或显示的所有位置,包括 属性 窗口和源代码中。

  • 单击某行的任何单元格会导致 属性 窗口显示该行所表示元素的属性。

  • 若要更改列的宽度,请拖动列标题右侧的边界,直到列是所需的宽度。

  • 可以通过单击行左侧的箭头符号来展开或折叠隔离舱或属性节点。

  • 类详细信息 窗口提供了多个按钮,用于在当前类中创建新成员,并在 类详细信息 窗口网格中的成员隔离舱之间导航。

在类设计器中使用键盘

类图支持以下键盘操作:

上下文 描述
箭头键 在类型形状内 对形状内容的树式导航(支持环绕形状)。 如果当前项是可展开的,左右方向键可用于展开/折叠当前项;如果不可展开,则导航到父项(详细行为请参阅树视图导航)。
箭头键 顶级形状 在图表上移动形状。
Shift+箭头键 在类型形状内 构建由形状元素(如成员、嵌套类型或区块)组成的连续选择。 这些快捷方式不支持环绕。
主页 在类型形状内 导航至顶级形状标题。
主页 顶级形状 导航至关系图上的第一个形状。
End 在类型形状内 导航到形状中的最后一个可见元素。
End 顶级形状 导航到图表上的最后一个形状。
Shift+Home 在类型形状内 选择形状内部以当前项开始,且以同一形状上最顶端的项结束的元素。
Shift+End 在类型形状内 与 Shift+Home 相同,但方向自上而下。
Enter 全部上下文 对形状执行默认操作,该操作也可以通过双击来实现。 在大多数情况下,这是视图代码,但某些元素以不同的方式定义它(棒棒糖,隔离舱标题,棒糖标签)。
+- 全部上下文 如果当前聚焦的元素可展开,这些键将展开或折叠该元素。
> 全部上下文 对具有子级的元素,如果该元素处于折叠状态并导航至第一个子级,则会展开它。
< 全部上下文 导航至父元素。
Alt+Shift+L 在类型形状内和在类型形状上。 导航至当前所选形状的棒糖形(如果存在)。
Alt+Shift+B 在类型形状内和在类型形状上。 如果基类型列表显示在类型形状上并且具有多个项,则这会切换列表(折叠/展开)的展开状态。
删除 在类型和注释形状上 调用“从关系图中移除”命令
删除 其他任何内容上。 调用“从代码中删除”命令(成员、参数、关联、继承、棒糖形标签)
Ctrl+Delete 全部上下文 对选择调用“从代码中删除”命令
Tab 全部上下文 导航至相同父项中的下一个子级(支持环绕)。
Shift+Tab 全部上下文 导航至相同父项中的上一个子级(支持环绕)。
空格键 全部上下文 在当前元素上切换选择。

在“类详细信息”窗口中使用键盘

注释

以下键绑定模拟键入代码的体验。

使用以下键来导航 类别详细信息 窗口:

结果
(逗号) 如果游标位于参数行中,则键入逗号会将光标移动到下一个参数的 Name 字段。 如果游标位于方法的最后一个参数行中,它将游标移动到 <添加参数> 字段,可以使用该字段创建新参数。

如果光标位于 类详细信息 窗口中的其他地方,则键入逗号将在当前字段中添加逗号。
;(分号)或 (右括号) 将光标移到“类详细信息”窗口网格中下一个成员行的“名称”字段
Tab 将光标移动到下一个字段,首先向左向右移动,然后从上到下移动。 如果将光标移出已键入文本的字段,则在此操作未生成错误时,类详细信息将处理并存储该文本

如果光标位于空字段(如 <添加参数>),则 Tab 将其移动到下一行的第一个字段。
空格键 将光标移动到下一个字段,首先向左向右移动,然后从上到下移动。 如果游标位于空字段(如 <添加参数>),则它将移到下一行的第一个字段。 请注意,紧跟在逗号后键入的 <空格> 会被忽略。

如果光标在“摘要”字段中,键入一个空格就会添加一个空格字符。

如果光标位于给定行的“隐藏”列中,则键入空格将切换“隐藏”复选框的值。
Ctrl+Tab 切换到另一个文档窗口。 例如,从 类详细信息 窗口切换到打开的代码文件。
Esc 如果已开始在字段中键入文本,按 ESC 会充当撤消键,将字段的内容还原为其以前的值。 如果“类详细信息”窗口具有常规焦点,但没有特定单元格具有焦点,则按 ESC 会将焦点移出 类详细信息 窗口。
向上箭头向下箭头 这些键会在类详细信息窗口网格中使光标在行间垂直移动
向左箭头 如果光标位于“名称”列中,按向左键则将在层次结构中折叠当前节点(如果它处于打开状态)。
向右键 如果光标位于“名称”列中,按向右键则将在层次结构中展开当前节点(如果它处于折叠状态)。

小贴士

有关键盘快捷方式的完整列表,请参阅 Visual Studio 中的键盘快捷方式