Partilhar via


Suporte para páginas de opções

Clicando em Opções sobre o Ferramentas menu é aberto o Opções caixa de diálogo. As opções nessa caixa de diálogo são coletivamente chamadas de páginas de opções. O controle de árvore no painel de navegação inclui categorias de opções e cada categoria tem páginas de opções. Quando você seleciona uma página, suas opções são exibidas no painel à direita. Essas páginas permitem que você altere os valores das opções que determinam o estado de um VSPackage.

Suporte para páginas de opções

O Package classe fornece suporte para opções de criação de páginas e categorias de opções. O DialogPage classe implementa uma página de opções.

A implementação padrão do DialogPage oferece suas propriedades públicas para um usuário em uma grade genérica de propriedades. Você pode personalizar esse comportamento, substituindo os diversos métodos na página para criar uma página de opções personalizadas que tem sua própria interface de usuário (UI). Para obter mais informações, consulte Passo a passo: Criando uma página de opções.

O DialogPage classe implementa IProfileManager, que fornece a persistência para páginas de opções e também para as configurações do usuário. As implementações padrão de LoadSettingsFromStorage e SaveSettingsToStorage métodos persistirem alterações de propriedade em uma seção do usuário do registro, se a propriedade pode ser convertida em uma seqüência de caracteres.

Caminho de registro de página de opções

Por padrão, o caminho do registro das propriedades gerenciadas por uma página de opções é determinado pela combinação UserRegistryRoot, a palavra DialogPage e o nome do tipo da classe de página de opções. Por exemplo, uma classe de página de opções poderão ser definida da seguinte maneira.

Namespace Company.OptionsPage
    Public Class OptionsPageGeneral
        Inherits DialogPage
    End Class 
End Namespace
namespace Company.OptionsPage
{
    public class OptionsPageGeneral : DialogPage
    {
    }
}

Se a UserRegistryRoot é HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp, e em seguida, os pares de nome e valor de propriedade são subchaves de HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral.

O caminho do registro da própria página de opções é determinado pela combinação ApplicationRegistryRoot, a palavra, ToolsOptionsPages e as opções de página nome e categoria. Por exemplo, se a página de opções personalizada tem a categoria, Minhas páginas de opção e o ApplicationRegistryRoot é HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, e em seguida, a página de opções tem a chave do registro, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Pages\Custom de opção.

Layout e os atributos de página de ferramentas/opções.

O ProvideOptionPageAttribute atributo determina o agrupamento das páginas de opções personalizadas em categorias na árvore de navegação da Opções caixa de diálogo. O ProvideOptionPageAttribute atributo associa a uma página de opções com o VSPackage que fornece a interface. Considere o fragmento de código a seguir:

<ProvideOptionPage(GetType(OptionsPageGeneral), "My Option Pages", "General", 101, 106, True),
 ProvideOptionPage(GetType(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, True),
 Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")>
Public Class MyPackage
    Inherits Package
[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

Isso declara que o MyPackage fornece duas páginas de opções, OptionsPageGeneral e OptionsPageCustom. No Opções ambas as páginas de opções de caixa de diálogo, aparecem na Minhas páginas da opção categoria como Geral e personalizado, respectivamente.

Atributos de opção e Layout

A interface de usuário (UI) que fornece a página determina a aparência das opções em uma página de opções personalizadas. O layout, rotulagem e descrição das opções em uma página de opções genéricas são determinados pelos seguintes atributos:

Considere o fragmento de código a seguir:

Private _optionInt As Integer

<Category("My Options"),
DisplayName("Integer Option"),
Description("My integer option")>
Public Property OptionInteger() As Integer 
    Get 
        Return _optionInt
    End Get 
    Set(ByVal value As Integer)
        _optionInt = value
    End Set 
End Property
[Category("My Options")]
[DisplayName("Integer Option")]
[Description("My integer option")]
public int OptionInteger { get; set; }

A opção de OptionInteger será exibida na página opções como Opção inteiro na Minhas opções categoria. Se a opção for selecionada, a descrição, minha opção inteiro, aparece na caixa Descrição.

Acessando páginas de opções a partir de outro VSPackage

Um VSPackage que hospeda e gerencia uma página de opções pode ser acessado programaticamente a partir de outro VSPackage usando o modelo de automação. Por exemplo, no código a seguir, um VSPackage é registrado como uma página de opção de hospedagem.

<ProvideOptionPage(GetType(MyOptionPage), "My Category", "My Grid Page", 0, 0, True)>
<Guid("6bb6942e-014c-489e-a612-a935680f703d")>
Public NotInheritable Class MyToolsOptions
    Inherits Package
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package

O fragmento de código a seguir obtém o valor de OptionInteger de MyOptionPage:

Dim dte As DTE = CType(GetService(GetType(DTE)), DTE)
Dim props As EnvDTE.Properties = dte.get_Properties("My Category", "My Grid Page")
Dim n As Integer = CInt(Fix(props.Item("OptionInteger").Value))
DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;

Quando o ProvideOptionPageAttribute atributo registra uma página de opções, a página está registrada sob a tecla se AutomationProperties a SupportsAutomation o argumento do atributo é true. Automação examina essa entrada do registro para localizar a VSPackage associado e a automação e acessa a propriedade através da página de opções hospedado, nesse caso, minha página de grade.

O caminho do registro da propriedade automação é determinado pela combinação ApplicationRegistryRoot, a palavra, AutomationProperties e as opções de página nome e categoria. Por exemplo, se a página de opções tem a categoria de My Category, o nome de minha página de grade e o ApplicationRegistryRoot, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, em seguida, a propriedade de automação tem a chave do registro, a página de grade de Category\My de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My.

Dica

O nome canônico, minha página de grade de Category.My, é o valor da subchave do nome dessa chave.

Consulte também

Tarefas

Passo a passo: Criando uma página de opções

Conceitos

Exemplos de extensibilidade de Visual Studio

Suporte para categorias de configurações

Outros recursos

Estado VSPackage