Optionen und Optionsseiten
Durch Klicken auf "Optionen" im Menü "Extras" wird das Dialogfeld "Optionen" geöffnet. Die Optionen in diesem Dialogfeld werden zusammen als Optionsseiten bezeichnet. Das Struktursteuerelement im Navigationsbereich enthält Optionskategorien, und jede Kategorie verfügt über Optionsseiten. Wenn Sie eine Seite auswählen, werden die zugehörigen Optionen im rechten Bereich angezeigt. Auf diesen Seiten können Sie die Werte der Optionen ä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.
Wenn dies UserRegistryRoot HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp ist, sind der Eigenschaftenname und die Wertpaare Unterschlüssel von 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" aufweist und " ApplicationRegistryRoot HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp" lautet, weist die Optionsseite den Registrierungsschlüssel auf, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom.
Extras/Optionen Seitenattribute und Layout
Das ProvideOptionPageAttribute Attribut bestimmt die Gruppierung von benutzerdefinierten Optionsseiten in Kategorien in der Navigationsstruktur des Dialogfelds "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. Im Dialogfeld "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:
Die Option "OptionInteger" wird auf der Optionsseite als "Ganzzahlige Option " in der Kategorie "Meine Optionen " angezeigt. Wenn die Option ausgewählt ist, wird die Option "Meine ganze Zahl" im Beschreibungsfeld angezeigt.
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
. Die Automatisierung untersucht diesen Registrierungseintrag, um das zugeordnete VSPackage zu finden, und die Automatisierung greift dann über die Seite "Gehostete Optionen" auf die Eigenschaft zu, in diesem Fall "Meine Rasterseite".
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 der "Meine Rasterseite" und " ApplicationRegistryRoot, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp" enthält, verfügt die Automatisierungseigenschaft über den Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.
Hinweis
Der kanonische Name "My Category.My Grid Page" ist der Wert des Unterschlüssels "Name" dieses Schlüssels.