Opzioni e pagine di opzioni

Se si fa clic su Opzioni dal menu Strumenti, viene visualizzata la finestra di dialogo Opzioni. Le opzioni in questa finestra di dialogo sono denominate collettivamente pagine di opzioni. Il controllo albero nel riquadro di spostamento include categorie di opzioni e ogni categoria include pagine di opzioni. Quando si seleziona una pagina, le relative opzioni vengono visualizzate nel riquadro destro. Queste pagine consentono di modificare i valori delle opzioni che determinano lo stato di un pacchetto VSPackage.

Supporto per le pagine delle opzioni

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

L'implementazione predefinita di DialogPage offre proprietà pubbliche a un utente in una griglia generica di proprietà. È possibile personalizzare questo comportamento eseguendo l'override di vari metodi nella pagina per creare una pagina di opzioni personalizzata con un'interfaccia utente personalizzata. Per altre informazioni, vedere Creazione di una pagina opzioni.

La DialogPage classe implementa IProfileManager, che fornisce la persistenza per le pagine delle opzioni e anche per le impostazioni utente. Le implementazioni predefinite dei LoadSettingsFromStorage metodi e SaveSettingsToStorage salvano in modo permanente le modifiche alle proprietà in una sezione utente del Registro di sistema se la proprietà può essere convertita in e da una stringa.

Percorso del Registro di sistema della pagina Opzioni

Per impostazione predefinita, il percorso del Registro di sistema delle proprietà gestite da una pagina di opzioni viene determinato combinando UserRegistryRoot, la parola DialogPage e il nome del tipo della classe della pagina delle opzioni. Ad esempio, è possibile definire una classe di pagina delle opzioni come indicato di seguito.

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

UserRegistryRoot Se è HKEY_CURRENT_Uedizione Standard R\Software\Microsoft\VisualStudio\8.0Exp, le coppie nome proprietà e valore sono sottochiavi di HKEY_CURRENT_Uedizione Standard R\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral.

Il percorso del Registro di sistema della pagina delle opzioni è determinato combinando ApplicationRegistryRoot, la parola, ToolsOptionsPages e la categoria e il nome della pagina delle opzioni. Ad esempio, se la pagina Opzioni personalizzate ha la categoria My Option Pages e ApplicationRegistryRoot è HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, la pagina delle opzioni ha la chiave del Registro di sistema, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom.

Strumenti/Opzioni Attributi pagina e layout

L'attributo ProvideOptionPageAttribute determina il raggruppamento di pagine di opzioni personalizzate in categorie nell'albero di spostamento della finestra di dialogo Opzioni . L'attributo ProvideOptionPageAttribute associa una pagina delle opzioni al VSPackage che fornisce l'interfaccia . Si consideri il frammento di codice riportato di seguito.

[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ò dichiara che MyPackage fornisce due pagine di opzioni, OptionsPageGeneral e OptionsPageCustom. Nella finestra di dialogo Opzioni entrambe le pagine delle opzioni vengono visualizzate rispettivamente nella categoria Pagine opzioni personali come Generale e Personalizzata.

Attributi e layout delle opzioni

L'interfaccia utente fornita dalla pagina determina l'aspetto delle opzioni in una pagina di opzioni personalizzata. Il layout, l'etichettatura e la descrizione delle opzioni in una pagina di opzioni generica sono determinati dagli attributi seguenti:

  • CategoryAttribute determina la categoria dell'opzione.

  • DisplayNameAttribute determina il nome visualizzato dell'opzione.

  • DescriptionAttribute determina la descrizione dell'opzione.

    Nota

    Attributi equivalenti, SRCategory, LocDisplayName e SRDescription, usano risorse stringa per la localizzazione e vengono definiti nell'esempio di progetto gestito.

    Si consideri il frammento di codice riportato di seguito.

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

L'opzione OptionInteger viene visualizzata nella pagina delle opzioni come opzione Integer nella categoria Opzioni personali. Se l'opzione è selezionata, la descrizione, l'opzione Numero intero, viene visualizzata nella casella di descrizione.

Accesso alle pagine delle opzioni da un altro VSPackage

Un VSPackage che ospita e gestisce una pagina di opzioni può essere accessibile a livello di codice da un altro pacchetto VSPackage usando il modello di automazione. Ad esempio, nel codice seguente un VSPackage viene registrato come hosting di una pagina di opzione.

[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package

Il frammento di codice seguente ottiene il valore di OptionInteger da 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;

Quando l'attributo ProvideOptionPageAttribute registra una pagina di opzioni, la pagina viene registrata nella chiave AutomationProperties se l'argomento SupportsAutomation dell'attributo è true. Automazione esamina questa voce del Registro di sistema per trovare il VSPackage associato e quindi l'automazione accede alla proprietà tramite la pagina delle opzioni ospitate, in questo caso My Grid Page.

Il percorso del Registro di sistema della proprietà di automazione viene determinato combinando ApplicationRegistryRoot, la parola, AutomationProperties e la categoria e il nome della pagina delle opzioni. Ad esempio, se la pagina delle opzioni include la categoria Categoria personale, il nome della pagina Griglia personale e ApplicationRegistryRoot, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, la proprietà di automazione ha la chiave del Registro di sistema, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.

Nota

Il nome canonico My Category.My Grid Page è il valore della sottochiave Name di questa chiave.