选项和选项页
单击“工具”菜单上的“选项”将打开“选项”对话框。 此对话框中的选项统称为选项页。 导航窗格中的树控件包括选项类别,并且每个类别都有选项页。 选择页面时,其选项将显示在右窗格中。 通过这些页面,可以更改确定 VSPackage 状态的选项的值。
对选项页的支持
该 Package 类支持创建选项页和选项类别。 该 DialogPage 类实现选项页。
默认实现 DialogPage 将其公共属性提供给一般属性网格中的用户。 可以通过重写页面上的各种方法来自定义此行为,以创建具有其自己的用户界面(UI)的自定义选项页。 有关详细信息,请参阅 “创建选项”页。
该 DialogPage 类实现 IProfileManager,它为选项页和用户设置提供持久性。 如果属性可以转换到字符串,并且SaveSettingsToStorage方法的默认实现LoadSettingsFromStorage会将属性更改保存到注册表的用户节中。
选项页注册表路径
默认情况下,选项页管理的属性的注册表路径由组合 UserRegistryRoot、Word DialogPage 和选项页类的类型名称确定。 例如,选项页类可以定义如下。
UserRegistryRoot如果HKEY_CURRENT_U标准版R\Software\Microsoft\VisualStudio\8.0Exp,则属性名称和值对是 HKEY_CURRENT_U标准版R\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral 的子项。
选项页本身的注册表路径通过组合 ApplicationRegistryRoot、单词、ToolsOptionsPages 和选项页类别和名称来确定。 例如,如果“自定义选项”页的类别为“我的选项页”,并且 ApplicationRegistryRoot HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp,则选项页具有注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom。
工具/选项页属性和布局
该ProvideOptionPageAttribute属性确定将自定义选项页分组到“选项”对话框导航树中的类别中。 该 ProvideOptionPageAttribute 属性将选项页与提供接口的 VSPackage 相关联。 可考虑使用以下 代码段:
[ProvideOptionPage(typeof(OptionsPageGeneral),"My Option Pages", "General", 101, 106, true)]
[ProvideOptionPage(typeof(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, true)]
[Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")]
public class MyPackage : Package
这声明 MyPackage 提供两个选项页:OptionsPageGeneral 和 OptionsPageCustom。 在“选项”对话框中,这两个选项页分别作为“常规”和“自定义”显示在“我的选项页”类别中。
选项属性和布局
页面提供的用户界面(UI)决定了自定义选项页面中选项的外观。 泛型选项页中选项的布局、标记和说明由以下属性确定:
CategoryAttribute 确定选项的类别。
DisplayNameAttribute 确定选项的显示名称。
DescriptionAttribute 确定选项的说明。
注意
等效属性、SRCategory、LocDisplayName 和 SRDescription 使用字符串资源进行本地化,并在托管项目示例中定义。
可考虑使用以下 代码段:
OptionInteger 选项在选项页上显示为“我的选项”类别中的整数选项。 如果选择了该选项,说明“ 我的整数”选项将显示在说明框中。
从另一个 VSPackage 访问选项页
可以使用自动化模型以编程方式从另一个 VSPackage 访问托管和管理选项页的 VSPackage。 例如,在以下代码中,VSPackage 注册为托管选项页。
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
以下代码片段从 MyOptionPage 获取 OptionInteger 的值:
DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;
ProvideOptionPageAttribute当属性注册选项页时,如果SupportsAutomation
属性的参数为 true
,则页面在 AutomationProperties 键下注册。 自动化会检查此注册表项以查找关联的 VSPackage,然后自动化通过托管选项页(在本例中为“我的网格”页)访问该属性。
自动化属性的注册表路径通过组合 ApplicationRegistryRoot、word、AutomationProperties 和选项页类别和名称来确定。 例如,如果选项页具有“我的类别”、“我的网格页名称”和 ApplicationRegistryRoot“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp”,则自动化属性具有注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page。
注意
规范名称“我的 Category.My 网格页”是此键的名称子项的值。