Condividi tramite


Supporto per le pagine di opzioni

Fare clic opzioni scegliere dal menu di strumenti visualizzata la finestra di dialogo di opzioni . Le opzioni di questa finestra di dialogo sono definite collettivamente pagine di opzioni. Il controllo di struttura ad albero nel riquadro di navigazione sono incluse le categorie di opzioni e ogni categoria ha pagine di opzioni. Quando si seleziona una pagina, le opzioni visualizzate nel riquadro di destra. Queste pagine consentono di modificare i valori delle opzioni che determinano lo stato di un VSPackage.

Supporto per le pagine di opzioni

La classe di Package fornisce il supporto per la creazione di pagine di opzioni e categorie di opzioni. la classe di DialogPage implementa una pagina di opzioni.

L'implementazione predefinita di DialogPage offre le proprietà pubbliche a un utente in una griglia generica delle proprietà. È possibile personalizzare questo comportamento eseguendo l'override dei diversi metodi nella pagina per creare una pagina delle opzioni personalizzata che dispone della propria interfaccia (UI) utente. Per ulteriori informazioni, vedere procedura dettagliata: creare una pagina di opzioni.

La classe di DialogPage implementa IProfileManager, che fornisce la persistenza per le pagine di opzioni e anche per le impostazioni utente. Le implementazioni predefinite dei metodi di SaveSettingsToStorage e di LoadSettingsFromStorage persistono la proprietà si effettua una sezione dell'utente del Registro di sistema se la proprietà può essere convertita in e da una stringa.

Percorso del Registro Di Sistema della pagina di opzioni

Per impostazione predefinita, il percorso del Registro di sistema delle proprietà gestite da una pagina delle opzioni è determinato combinando UserRegistryRoot, la parola DialogPage e il nome del tipo della classe della pagina di opzioni. Ad esempio, una classe delle pagine di opzioni potrebbe essere definita come segue.

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

Se UserRegistryRoot è \Software\Microsoft\VisualStudio\8.0Exp, then the property name and value pairs are subkeys of HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral HKEY_CURRENT_USER.

Il percorso della pagina di opzioni stesso del Registro di sistema è determinato combinando ApplicationRegistryRoot, la parola, ToolsOptionsPages e le opzioni della categoria e il nome. Ad esempio, se la pagina personalizzata di opzioni dispone della categoria, le mie pagine di opzione e ApplicationRegistryRoot è \SOFTWARE\Microsoft\VisualStudio\8.0Exp, then the options page has the registry key, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom HKEY_LOCAL_MACHINE.

Gli strumenti e opzioni degli attributi e del layout

L'attributo di ProvideOptionPageAttribute determina il raggruppamento delle pagine personalizzate di opzioni in categorie nella struttura ad albero di navigazione della finestra di dialogo di opzioni . L'attributo di ProvideOptionPageAttribute associa una pagina di opzioni con il package VS che fornisce l'interfaccia. Si consideri il frammento di codice riportato di seguito.

<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

Ciò indica che MyPackage fornisce due pagine, OptionsPageGeneral e OptionsPageCustom di opzioni. Nella finestra di dialogo di opzioni , entrambe le pagine di opzioni sono visualizzate nella categoria di Le mie pagine di opzione come Generale e Personalizzati, rispettivamente.

attributi e layout di opzione

L'interfaccia utente (UI) della pagina garantisce determina l'aspetto delle opzioni in una pagina personalizzata di opzioni. Il layout, il contrassegno e la descrizione delle opzioni in una pagina generica di opzioni sono determinate dai seguenti attributi:

Si consideri il frammento di codice riportato di seguito.

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; }

L'opzione di OptionInteger viene visualizzato nella pagina di opzioni come opzione Integer nella categoria di Le mie opzioni . Se l'opzione è selezionata, la descrizione, Dell'opzione Integer, viene visualizzato nella casella di descrizione.

Accedere alle pagine di opzioni da un altro package VS

Un package VS che ospita e gestisce una pagina delle opzioni possibile controllare a livello di codice accessibile da un altro package VS tramite il modello di automazione. Nel codice seguente, ad esempio un VSPackage è registrato come ospitare una pagina di opzione.

<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

Nel frammento di codice ottiene il valore di OptionInteger da 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 l'attributo di ProvideOptionPageAttribute registra una pagina delle opzioni, la pagina viene registrata con la chiave AutomationProperties se l'argomento di SupportsAutomation dell'attributo è true. L'automazione esamina questa voce del Registro di sistema per individuare il package VS associato e l'automazione accede quindi alla proprietà tramite la pagina di hosting di opzioni, in questo caso, con la pagina della griglia.

Il percorso del Registro di sistema di proprietà di automazione è determinato combinando ApplicationRegistryRoot, la parola, AutomationProperties e le opzioni della categoria e il nome. Ad esempio, se la pagina delle opzioni contiene con la categoria di categoria, my nome della pagina della griglia e ApplicationRegistryRoot, \SOFTWARE\Microsoft\VisualStudio\8.0Exp, then the automation property has the registry key, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page HKEY_LOCAL_MACHINE.

Nota

Il nome canonico, con la pagina della griglia di Category.My, è il valore della sottochiave del nome di questa chiave.

Vedere anche

Attività

procedura dettagliata: creare una pagina di opzioni

Concetti

Esempi di estensibilità di Visual Studio

Supporto per le categorie di impostazioni

Altre risorse

Stato di un VSPackage