Opcje i strony opcji
Kliknięcie pozycji Opcje w menu Narzędzia powoduje otwarcie okna dialogowego Opcje . Opcje w tym oknie dialogowym są określane zbiorczo jako strony opcji. Kontrolka drzewa w okienku nawigacji zawiera kategorie opcji, a każda kategoria ma strony opcji. Po wybraniu strony jej opcje są wyświetlane w okienku po prawej stronie. Te strony umożliwiają zmianę wartości opcji określających stan pakietu VSPackage.
Obsługa stron opcji
Klasa Package zapewnia obsługę tworzenia stron opcji i kategorii opcji. Klasa DialogPage implementuje stronę opcji.
Domyślna implementacja DialogPage oferuje jej właściwości publiczne użytkownikowi w ogólnej siatce właściwości. To zachowanie można dostosować, przesłaniając różne metody na stronie, aby utworzyć stronę opcji niestandardowych, która ma własny interfejs użytkownika. Aby uzyskać więcej informacji, zobacz Tworzenie strony opcji.
Klasa DialogPage implementuje IProfileManagerelement , który zapewnia trwałość stron opcji, a także ustawień użytkownika. Domyślne implementacje LoadSettingsFromStorage metod i SaveSettingsToStorage utrwalają zmiany właściwości w sekcji użytkownika rejestru, jeśli właściwość można przekonwertować na i z ciągu.
Ścieżka rejestru stron opcji
Domyślnie ścieżka rejestru właściwości zarządzanych przez stronę opcji jest określana przez połączenie UserRegistryRootwyrazu DialogPage i nazwę typu klasy strony opcji. Na przykład klasa strony opcji może być zdefiniowana w następujący sposób.
Jeśli parametr UserRegistryRoot to HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp, pary nazw i wartości właściwości są podkluczami HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral.
Ścieżka rejestru strony opcji jest określana przez połączenie ApplicationRegistryRootwyrazu , NarzędziaOptionsPages oraz kategorii i nazwy strony opcji. Jeśli na przykład strona Opcje niestandardowe ma kategorię Moje strony opcji, a element ApplicationRegistryRoot to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, strona opcji ma klucz rejestru, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom.
Narzędzia/opcje Atrybuty strony i układ
Atrybut ProvideOptionPageAttribute określa grupowanie stron opcji niestandardowych na kategorie w drzewie nawigacji okna dialogowego Opcje . Atrybut ProvideOptionPageAttribute kojarzy stronę opcji z pakietem VSPackage, który udostępnia interfejs. Rozważmy następujący fragment kodu:
[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
Deklaruje to, że pakiet MyPackage udostępnia dwie strony opcji OpcjeOgólne i OpcjeDostosowanie. W oknie dialogowym Opcje obie strony opcji są wyświetlane odpowiednio w kategorii Moje strony opcji jako Ogólne i Niestandardowe.
Atrybuty i układ opcji
Interfejs użytkownika , który udostępnia strona, określa wygląd opcji na stronie opcji niestandardowych. Układ, etykietowanie i opis opcji na stronie opcji ogólnych są określane przez następujące atrybuty:
CategoryAttribute określa kategorię opcji.
DisplayNameAttribute określa nazwę wyświetlaną opcji.
DescriptionAttribute określa opis opcji.
Uwaga
Równoważne atrybuty, SRCategory, LocDisplayName i SRDescription, używają zasobów ciągów do lokalizacji i są zdefiniowane w przykładzie projektu zarządzanego.
Rozważmy następujący fragment kodu:
Opcja OpcjaInteger jest wyświetlana na stronie opcji jako Opcja całkowita w kategorii Moje opcje . Jeśli opcja jest zaznaczona, opis Moja liczba całkowita pojawi się w polu opisu.
Uzyskiwanie dostępu do stron opcji z innego pakietu VSPackage
Pakiet VSPackage, który hostuje stronę opcji i zarządza nią, można uzyskać dostęp programowo z poziomu innego pakietu VSPackage przy użyciu modelu automatyzacji. Na przykład w poniższym kodzie pakiet VSPackage jest zarejestrowany jako hostowanie strony opcji.
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
Poniższy fragment kodu pobiera wartość OptionInteger z programu 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;
ProvideOptionPageAttribute Gdy atrybut rejestruje stronę opcji, strona jest zarejestrowana w kluczu AutomationProperties, jeśli SupportsAutomation
argument atrybutu to true
. Usługa Automation sprawdza ten wpis rejestru, aby znaleźć skojarzony pakiet VSPackage, a następnie automatyzacja uzyskuje dostęp do właściwości za pośrednictwem strony opcji hostowanych, w tym przypadku strony Moja siatka.
Ścieżka rejestru właściwości automatyzacji jest określana przez połączenie ApplicationRegistryRootwyrazu , automationProperties oraz kategorii i nazwy strony opcji. Jeśli na przykład na stronie opcji znajduje się kategoria Moja kategoria, nazwa strony siatki i ApplicationRegistryRoot, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, właściwość automatyzacji ma klucz rejestru, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.
Uwaga
Nazwa kanoniczna My Category.My Grid Page jest wartością podklucza Nazwa tego klucza.