Freigeben über


Options- und Optionsseiten

Wenn Sie " Optionen" im Menü " Extras " auswählen, wird der Bereich "Optionen " geöffnet. Die Kategorien von Einstellungen, auf die über diesen Bereich zugegriffen werden kann, werden zusammen als Optionsseiten bezeichnet.

Der linke Teil des Bereichs bietet Navigation für Kategorien der obersten Ebene (oder Abschnitte) und deren Unterabschnitte. Jeder Abschnitt und Unterabschnitt ist eine Optionsseite. Die spezifischen Optionen oder Einstellungen werden im rechten Bereich des Bereichs angezeigt. Auf den Optionsseiten können Sie die Werte für Optionen und Einstellungen ändern, die den Status eines VSPackage bestimmen.

Wenn Sie " Optionen" im Menü " Extras " auswählen, wird das Dialogfeld "Optionen " geöffnet. Die Kategorien von Einstellungen, auf die über dieses Dialogfeld zugegriffen werden kann, werden zusammen als Optionsseiten bezeichnet.

Der linke Teil des Dialogfelds stellt die Navigation für Kategorien der obersten Ebene (oder Abschnitte) und deren Unterabschnitte bereit. Jeder Abschnitt und Unterabschnitt ist eine Optionsseite. Die spezifischen Optionen oder Einstellungen werden im rechten Teil des Dialogfelds angezeigt. Auf den Optionsseiten können Sie die Werte für Optionen und Einstellungen ändern, die den Status eines VSPackage bestimmen.

Unterstützung für Optionsseiten

Die Package Klasse bietet Unterstützung für das Erstellen von Optionsseiten und Optionskategorien. Die DialogPage Klasse implementiert eine Optionsseite.

Die Standardimplementierung bietet DialogPage einem Benutzer in einem generischen Eigenschaftenraster seine öffentlichen Eigenschaften an. Sie können dieses Verhalten anpassen, indem Sie verschiedene Methoden auf der Seite überschreiben, um eine benutzerdefinierte Optionsseite zu erstellen, die über eine eigene Benutzeroberfläche (UI) verfügt. Weitere Informationen finden Sie unter Erstellen einer Optionsseite.

Die DialogPage Klasse implementiert , die Persistenz IProfileManagerfür Optionsseiten und auch für Benutzereinstellungen bereitstellt. Die Standardimplementierungen der LoadSettingsFromStorage Und SaveSettingsToStorage Methoden speichern Eigenschaftsänderungen in einem Benutzerabschnitt der Registrierung, wenn die Eigenschaft in eine und aus einer Zeichenfolge konvertiert werden kann.

Registrierungspfad der Optionsseite

Standardmäßig wird der Registrierungspfad der von einer Optionsseite verwalteten Eigenschaften durch Kombinieren UserRegistryRoot, Das Wort DialogPage und den Typnamen der Optionsseitenklasse bestimmt. Eine Optionsseitenklasse kann z. B. wie folgt definiert werden.

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

Wenn der UserRegistryRoot Wert HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Expist, sind der Eigenschaftsname und die Wertpaare Unterschlüssel HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral.

Der Registrierungspfad der Optionsseite selbst wird durch Kombinationen ApplicationRegistryRoot, Wort, ToolsOptionsPages und die Kategorie und den Namen der Optionsseite bestimmt. Wenn z. B. die Seite "Benutzerdefinierte Optionen" die Kategorie", "Meine Optionsseiten" und " ApplicationRegistryRoot HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp" aufweist, weist die Optionsseite den Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Customauf.

Extras/Optionen Seitenattribute und Layout

Das ProvideOptionPageAttribute Attribut bestimmt die Gruppierung von benutzerdefinierten Optionsseiten in Kategorien in der Navigationsstruktur "Optionen ". Das ProvideOptionPageAttribute Attribut ordnet eine Optionsseite mit der VSPackage zu, die die Schnittstelle bereitstellt. Betrachten Sie das folgende Codefragment:

[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

Dadurch wird deklariert, dass MyPackage zwei Optionsseiten bereitstellt: OptionsPageGeneral und OptionsPageCustom. Unter "Optionen" werden beide Optionsseiten in der Kategorie "Meine Optionsseiten" als "Allgemein " bzw. " Benutzerdefiniert" angezeigt.

Optionsattribute und Layout

Die Von der Seite bereitgestellte Benutzeroberfläche bestimmt das Erscheinungsbild von Optionen auf einer benutzerdefinierten Optionsseite. Das Layout, die Bezeichnung und die Beschreibung von Optionen auf einer generischen Optionsseite werden durch die folgenden Attribute bestimmt:

  • CategoryAttribute bestimmt die Kategorie der Option.

  • DisplayNameAttribute bestimmt den Anzeigenamen der Option.

  • DescriptionAttribute bestimmt die Beschreibung der Option.

    Hinweis

    Gleichwertige Attribute, SRCategory, LocDisplayName und SRDescription verwenden Zeichenfolgenressourcen für die Lokalisierung und werden im verwalteten Projektbeispiel definiert.

    Betrachten Sie das folgende Codefragment:

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

Die Option "OptionInteger" wird auf der Optionsseite als " Ganzzahlige Option " in der Kategorie "Meine Optionen" angezeigt. Wenn die Option ausgewählt ist, enthält das Beschreibungsfeld die Option "Meine ganze Zahl".

Zugreifen auf Optionsseiten aus einem anderen VSPackage

Auf eine VSPackage, die eine Optionsseite hosten und verwaltet, kann programmgesteuert über ein anderes VSPackage mithilfe des Automatisierungsmodells zugegriffen werden. Im folgenden Code wird beispielsweise ein VSPackage als Host für eine Optionsseite registriert.

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

Das folgende Codefragment ruft den Wert von OptionInteger von MyOptionPage ab:

DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;

Wenn das ProvideOptionPageAttribute Attribut eine Optionsseite registriert, wird die Seite unter dem AutomationProperties-Schlüssel registriert, wenn das SupportsAutomation Argument des Attributs lautet true. Automatisierung untersucht diesen Registrierungseintrag, um das zugeordnete VSPackage zu finden, und die Automatisierung greift dann über die Seite mit gehosteten Optionen auf die Eigenschaft zu, die in diesem Fall "Meine Rasterseite" lautet.

Der Registrierungspfad der Automatisierungseigenschaft wird durch Kombinationen ApplicationRegistryRoot, Wort, AutomationProperties und die Kategorie und den Namen der Optionsseite bestimmt. Wenn die Optionsseite z. B. die Kategorie "Meine Kategorie", den Namen "Meine Rasterseite" und den ApplicationRegistryRoot, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, enthält die Automatisierungseigenschaft den Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.

Hinweis

Der kanonische Name "Meine Category.My Rasterseite" ist der Wert des Unterschlüssels "Name" dieses Schlüssels.