Unterstützung für Optionsseiten
Durch Klicken auf Optionen auf dem Extras Menü öffnet das Dialogfeld Optionen . Die Optionen in diesem Dialogfeld werden zusammen als Optionsseiten. Das Tree-Steuerelement im Navigationsbereich Option enthält, und jede Kategorie hat Optionsseiten. Wenn Sie eine Seite klicken, werden die Optionen im rechten Bereich angezeigt. Mithilfe dieser Seite können Sie die Werte der Optionen ändern, die den Zustand von VSPackages bestimmen.
Unterstützung für Optionsseiten
Die Package-Klasse bietet Unterstützung für das Erstellen von Optionsseiten und der Option. Die DialogPage-Klasse implementiert eine Optionsseite.
Die Standardimplementierung von DialogPage bietet seine öffentlichen Eigenschaften zu einem Benutzer in einem generischen Raster von Eigenschaften angezeigt. Sie können dieses Verhalten anpassen, indem Sie verschiedene Möglichkeiten auf der Seite überschreiben, um eine benutzerdefinierte Optionsseite erstellen, die über eine eigene Benutzeroberfläche verfügt. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Eine Optionsseite erstellen.
Die DialogPage-Klasse implementiert IProfileManager, die Dauerhaftigkeit für Optionsseiten und auch für Benutzereinstellungen bereitstellt. Die Standardimplementierungen der LoadSettingsFromStorage und Methoden bestehen SaveSettingsToStorage-Eigenschaftenänderungen einen Benutzer in der Registrierung erhalten, wenn die Eigenschaft in eine Zeichenfolge und aus einer Zeichenfolge konvertiert werden kann.
Optionsseiten-Registrierungs-Pfad
Standardmäßig wird der Registrierungspfad der Eigenschaften, die von einer Optionsseite verwaltet werden bestimmt, indem UserRegistryRoot, das Wort DialogPage und den Typnamen der Klasse für Optionsseiten kombiniert. Beispielsweise kann eine Klasse für Optionsseiten wie folgt definiert werden.
Namespace Company.OptionsPage
Public Class OptionsPageGeneral
Inherits DialogPage
End Class
End Namespace
namespace Company.OptionsPage
{
public class OptionsPageGeneral : DialogPage
{
}
}
Wenn UserRegistryRoot HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 8.0Exp ist, sind die Eigenschaftennamen und die Unterschlüssel von HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 8.0Exp \ DialogPage \ Company.OptionsPage.OptionsPageGeneral.
Der Registrierungspfad der Optionsseite selbst wird bestimmt, indem ApplicationRegistryRoot, das Wort, ToolsOptionsPages und die Kategorie " Optionsseiten und - name kombiniert. Wenn die benutzerdefinierte Optionsseite enthält, ist die Kategorie, Meine Optionsseiten und ApplicationRegistryRoot HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 8.0Exp, hat die Optionsseite den Registrierungsschlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 8.0Exp \ Custom \ Optionsseiten \ My ToolsOptionsPages.
Tools/Optionsseiten-Attribute und Lay-out
Das ProvideOptionPageAttribute-Attribut bestimmt das Gruppieren benutzerdefinierter Optionsseiten in Kategorien in der Navigationsstruktur des Optionen Dialogfelds. Das ProvideOptionPageAttribute-Attribut ordnet eine Seite mit einem VSPackage, die die Schnittstelle bereitstellt. Betrachten Sie das folgende Codefragment:
<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
Dieses deklariert, dass MyPackage zwei Optionsseiten, OptionsPageGeneral und OptionsPageCustom bereitstellt. Im Dialogfeld werden beide Optionsseiten Optionen in der Meine Optionsseiten Kategorie als Allgemein und Benutzerdefiniert.
Options-Attribute und Lay-out
Die Benutzeroberfläche der Seite bereitgestellt wird, bestimmt die Darstellung von Optionen in einer benutzerdefinierten Optionsseite. Das Lay-out, das Bezeichnen und die Beschreibung der Optionen in 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
Zugehörige Attribute, SRCategory, LocDisplayName und SRDescription, verwenden zeichenfolgenressourcen für die Lokalisierung und werden in definiert managed project sample.
Betrachten Sie das folgende Codefragment:
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; }
Die OptionInteger-Option wird auf der Optionsseite als Ganzzahlige Option in der Meine Optionen Kategorie. Wenn die Option aktiviert wurde, wird die Beschreibung, Meine ganzzahlige Optionim Feld Beschreibung.
Zugreifen auf einem VSPackage von einem anderen Optionsseiten
VSPackage des Hosts und Verwalten einer Seite kann von einem anderen VSPackage programmgesteuert zugegriffen werden, indem das Automatisierungsmodell verwendet. Beispielsweise wird im folgenden Code wird ein VSPackage als Hosten einer Seite registriert.
<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
Im folgenden Codefragment wird der Wert der OptionInteger von MyOptionPage ab:
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;
Wenn das Attribut ProvideOptionPageAttribute eine Seite registriert, wird die Seite mit der AutomationProperties-Taste registriert, wenn das SupportsAutomation-Argument des Attributs trueist. Automatisierung überprüft den Registrierungseintrag, um zugeordnete VSPackages zu suchen, und die Automatisierung greift dann die Eigenschaft um die gehostete Seite Meine Raster-Seite sich in diesem Fall an.
Der Registrierungspfad der Automatisierungseigenschaft wird bestimmt, indem ApplicationRegistryRoot, das Wort und AutomationProperties, Kategorie und der Name der Optionsseiten kombiniert. Wenn beispielsweise die Seite Meine die Kategorie Kategorien und den persönlichen Raster-Seitennamen aufweist, hat ApplicationRegistryRootHKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 8.0Exp und dann mit Automatisierungseigenschaft den Registrierungsschlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 8.0Exp \ AutomationProperties \ My Kategorie \ My Raster-Seite.
Hinweis
Der kanonische Name, Meine Category.My-Raster-Seite, ist der Wert dieser unterschlüssels Name des Schlüssels.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Eine Optionsseite erstellen
Konzepte
Visual Studio-Erweiterbarkeits-Beispiele
Unterstützung für Einstellungskategorien