IDE 中的选择和货币

Visual Studio 集成开发环境(IDE)使用选择 上下文维护有关用户当前所选对象的信息。 借助选择上下文,VSPackages 可以通过两种方式参与货币跟踪:

  • 通过将有关 VSPackage 的货币信息传播到 IDE。

  • 通过监视 IDE 中用户当前处于活动状态的选择。

选择上下文

Visual Studio IDE 全局跟踪其自己的全局选择上下文对象中的 IDE 货币。 下表显示了构成选择上下文的元素。

元素 说明
当前层次结构 通常为当前项目;NULL 当前层次结构指示整个解决方案是最新的。
当前 ItemID 当前层次结构中的选定项;当项目窗口中有多个选择时,可以有多个当前项。
当前 SelectionContainer 保存属性窗口应为其显示属性的一个或多个对象。

此外,环境还维护两个全局列表:

  • 活动 UI 命令标识符的列表

  • 当前活动元素类型的列表。

窗口类型和选择

Visual Studio IDE 将窗口组织成两种常规类型:

  • 层次结构类型窗口

  • 框架窗口,如工具和文档窗口

    IDE 会以不同的方式跟踪每个窗口类型的货币。

    最常见的项目类型窗口是 IDE 控制的解决方案资源管理器。 项目类型窗口跟踪全局选择上下文的全局层次结构和 ItemID,该窗口依赖于用户的选择来确定当前层次结构。 对于项目类型窗口,环境提供全局服务 SVsShellMonitorSelection,通过该服务 VSPackage 可以监视打开的元素的当前值。 环境中的属性浏览由此全局服务驱动。

    另一方面,框架窗口使用框架窗口中的 DocObject 推送 SelectionContext 值(hierarchy/ItemID/SelectionContainer trio)。 。 框架窗口将服务 SVsShellMonitorSelection 用于此目的。 DocObject 只能推送所选容器的值,使层次结构和 ItemID 的本地值保持不变,就像 MDI 子文档的典型一样。

事件和货币

可能会发生两种类型的事件,这些事件会影响环境的货币概念:

  • 传播到全局级别的事件并更改窗口框架选择上下文。 此类事件的示例包括正在打开的 MDI 子窗口、正在打开的全局工具窗口或正在打开的项目类型工具窗口。

  • 更改窗口框架选择上下文中跟踪的元素的事件。 示例包括更改 DocObject 中的选定内容或更改项目类型窗口中的选择。