選項和選項頁
按兩下 [工具] 選單上的 [選項] 會開啟 [選項] 對話框。 此對話框中的選項統稱為 [選項] 頁面。 瀏覽窗格中的樹狀控件包含選項類別,而且每個類別都有選項頁面。 當您選取頁面時,其選項會出現在右窗格中。 這些頁面可讓您變更決定 VSPackage 狀態的選項值。
支援選項頁面
類別 Package 支援建立選項頁面和選項類別。 類別 DialogPage 會實作選項頁面。
的預設實 DialogPage 作會將其公用屬性提供給屬性的泛型方格中的使用者。 您可以覆寫頁面上的各種方法來自定義此行為,以建立具有其使用者介面 (UI) 的自定義選項頁面。 如需詳細資訊,請參閱 建立選項頁面。
類別 DialogPage 會實作 IProfileManager,它提供選項頁面的持續性,也提供使用者設定的持續性。 如果屬性可以轉換成字串,和 SaveSettingsToStorage 方法的預設實LoadSettingsFromStorage作會將屬性變更保存到登錄的用戶區段。
選項頁面登錄路徑
根據預設,選項頁面所管理之屬性的登錄路徑取決於結合 UserRegistryRoot、DialogPage 一詞,以及選項頁面類別的類型名稱。 例如,選項頁面類別的定義如下。
UserRegistryRoot如果 是 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp,則屬性名稱和值組是 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral 的屬性名稱和值組子機碼。
選項頁面本身的登錄路徑是由結合 ApplicationRegistryRoot、[工具][選項][頁面] 和 [選項] 頁面類別和名稱來決定。 例如,如果 [自定義選項] 頁面的類別為 [我的選項頁面],而 ApplicationRegistryRoot 是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp,則選項頁面具有登錄機碼,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom。
工具/選項頁面屬性和版面配置
屬性ProvideOptionPageAttribute會決定將自訂選項頁面分組為 [選項] 對話框導覽樹狀目錄中的類別。 屬性 ProvideOptionPageAttribute 會將選項頁面與提供 介面的 VSPackage 產生關聯。 請考慮下列程式碼片段:
[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
這會宣告 MyPackage 提供兩個選項頁面:OptionsPageGeneral 和 OptionsPageCustom。 在 [選項] 對話框中,這兩個選項頁面分別出現在 [我的選項頁面] 類別中,分別顯示為 [一般] 和 [自定義]。
選項屬性和版面配置
頁面提供的使用者介面 (UI) 會決定自訂選項頁面中選項的外觀。 泛型選項頁面中選項的配置、標籤和描述取決於下列屬性:
CategoryAttribute 會決定選項的類別。
DisplayNameAttribute 會決定選項的顯示名稱。
DescriptionAttribute 會決定選項的描述。
注意
對等屬性、SRCategory、LocDisplayName 和 SRDescription 會使用字串資源進行當地語系化,並在 Managed 專案範例中定義。
請考慮下列程式碼片段:
OptionInteger 選項會出現在選項頁面上,作為 [我的選項] 類別中的 [整數選項]。 如果已選取此選項,則描述 [ 我的整數] 選項會出現在 [描述] 方塊中。
從另一個 VSPackage 存取選項頁面
裝載和管理選項頁面的 VSPackage 可以使用自動化模型,以程式設計方式從另一個 VSPackage 存取。 例如,在下列程式代碼中,VSPackage 會註冊為裝載選項頁面。
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
下列代碼段會從 MyOptionPage 取得 OptionInteger 的值:
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當屬性註冊選項頁面時,如果 SupportsAutomation
屬性的自變數為 true
,則會在 AutomationProperties 索引鍵下註冊頁面。 自動化會檢查此登錄專案以尋找相關聯的 VSPackage,然後自動化會透過託管的選項頁面存取 屬性,在此案例中為 [我的方格頁面]。
自動化屬性的登錄路徑是由結合 ApplicationRegistryRoot、word、AutomationProperties 和選項頁面類別和名稱來決定。 例如,如果選項頁面具有 [我的類別] 類別、[我的方格頁面名稱] 和 ApplicationRegistryRoot,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp,則 automation 屬性具有登錄機碼,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page。
注意
標準名稱 My Category.My Grid Page 是此索引鍵的 Name 子機碼值。