Поделиться через


Параметры и страницы параметров

В меню "Сервис" откроется диалоговое окно "Параметры". Параметры в этом диалоговом окне совместно называются страницами параметров. Элемент управления "Дерево" в области навигации включает категории параметров, а каждая категория имеет страницы параметров. При выборе страницы его параметры отображаются в правой области. Эти страницы позволяют изменять значения параметров, определяющих состояние VSPackage.

Поддержка страниц параметров

Класс Package предоставляет поддержку создания страниц параметров и категорий параметров. Класс DialogPage реализует страницу параметров.

Реализация по умолчанию DialogPage предоставляет общедоступные свойства пользователю в универсальной сетке свойств. Это поведение можно настроить, переопределив различные методы на странице, чтобы создать страницу настраиваемых параметров с собственным пользовательским интерфейсом (пользовательский интерфейс). Дополнительные сведения см. в разделе "Создание страницы параметров".

Класс DialogPage реализует IProfileManager, который обеспечивает сохраняемость страниц параметров, а также для параметров пользователя. Реализации LoadSettingsFromStorage SaveSettingsToStorage свойств по умолчанию сохраняются в пользовательском разделе реестра, если свойство можно преобразовать в строку и из нее.

Путь к реестру страниц параметров

По умолчанию путь реестра свойств, управляемых страницей параметров, определяется объединением UserRegistryRoot, словом DialogPage и именем типа класса страницы параметров. Например, класс страницы параметров можно определить следующим образом.

namespace Company.OptionsPage
{
    public class OptionsPageGeneral : DialogPage
    {
    }
}

Если задано UserRegistryRoot значение HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp, то пары свойств и значений являются подразделами HKEY_CURRENT_USER\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. В диалоговом окне "Параметры" оба параметра отображаются в категории "Мои страницы параметров" в качестве общего и настраиваемого соответственно.

Атрибуты и макет параметров

Пользовательский интерфейс, который предоставляется на странице, определяет внешний вид параметров на странице настраиваемых параметров. Макет, метка и описание параметров на странице универсальных параметров определяются следующими атрибутами:

  • CategoryAttribute определяет категорию параметра.

  • DisplayNameAttribute определяет отображаемое имя параметра.

  • DescriptionAttribute определяет описание параметра.

    Примечание.

    Эквивалентные атрибуты, SRCategory, LocDisplayName и SRDescription используют строковые ресурсы для локализации и определяются в примере управляемого проекта.

    Рассмотрим следующий фрагмент кода:

    [Category("My Options")]
    [DisplayName("Integer Option")]
    [Description("My integer option")]
    public int OptionInteger { get; set; }
    

Параметр 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

Следующий фрагмент кода получает значение OptionInteger из MyOptionPage:

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 Когда атрибут регистрирует страницу параметров, страница регистрируется в ключе AutomationProperties, если SupportsAutomation аргумент атрибута равенtrue. Автоматизация проверяет эту запись реестра, чтобы найти связанный VSPackage, а затем автоматизация обращается к свойству на странице размещенных параметров, в данном случае my Grid Page.

Путь к реестру свойства автоматизации определяется объединением ApplicationRegistryRoot, словом, AutomationProperties и категорией страниц и именем страницы параметров. Например, если страница параметров имеет категорию "Моя категория", имя страницы "Моя сетка" и ApplicationRegistryRoot"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp", свойство автоматизации имеет раздел реестра, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.

Примечание.

Каноническое имя страницы сетки my Category.My — это значение подраздела Name этого ключа.