選項和選項頁面
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
按一下選項上工具功能表開啟選項對話方塊。 在此對話方塊中的選項合稱為選項頁面。 瀏覽窗格中的樹狀目錄控制項包含選項類別,而且每個類別目錄選項頁面。 當您選取頁面的選項會出現在右窗格中。 這些頁面可讓您變更選項,以決定 VSPackage 狀態的值。
支援選項頁
封裝類別提供建立選項頁面和選項類別支援。 DialogPage類別會實作選項頁面。
預設實作DialogPage泛用的屬性方格中的使用者提供其公用屬性。 藉由覆寫各種方法來建立自訂選項頁面,其中包含它自己的使用者介面 (UI) 頁面上,您可以自訂此行為。 如需詳細資訊,請參閱建立選項 頁面。
DialogPage類別會實作IProfileManager,這樣會提供持續性選項頁以及使用者設定。 預設實作LoadSettingsFromStorage和SaveSettingsToStorage方法保存屬性變更登錄使用者區段中,如果可以轉換的屬性,與字串。
選項頁面登錄路徑
根據預設,由 [選項] 頁面上的屬性的登錄路徑由合併UserRegistryRoot,DialogPage,and 選項頁面類別的型別名稱。 例如,選項頁面類別可以定義,如下所示。
namespace Company.OptionsPage
{
public class OptionsPageGeneral : DialogPage
{
}
}
Namespace Company.OptionsPage
Public Class OptionsPageGeneral
Inherits DialogPage
End Class
End Namespace
如果UserRegistryRoot HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp,則屬性名稱 / 值組是 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral 子機碼。
[選項] 頁面本身的登錄路徑由合併ApplicationRegistryRoot,word、 ToolsOptionsPages 及選項頁面類別目錄和名稱。 例如,如果自訂選項 頁面上有該類別,我選項頁,而ApplicationRegistryRoot HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp,則 [選項] 頁面上已登錄機碼,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My 選項 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
<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
這會宣告 MyPackage 提供兩個選項和頁面,OptionsPageGeneral OptionsPageCustom。 在選項中會出現的對話方塊中,這兩個選項頁面我選項頁面類別,以作為一般和自訂分別。
選項屬性和版面配置
在頁面上的使用者介面 (UI) 外觀的自訂選項頁面中的選項。 版面配置、 標記、 和描述的一般選項 頁面中的選項決定下列屬性︰
CategoryAttribute決定的選項。
DisplayNameAttribute決定選擇的顯示名稱。
DescriptionAttribute決定選項的描述。
注意
對等的屬性、 SRCategory、 LocDisplayName 和 SRDescription,用於當地語系化字串資源,且已定義在受管理的專案範例。
請考慮下列程式碼片段:
[Category("My Options")]
[DisplayName("Integer Option")]
[Description("My integer option")]
public int OptionInteger { get; set; }
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
OptionInteger 選項會出現在 [選項] 頁面,為整數選項中My Options類別。 如果選取此選項,則描述我整數選項,會出現在 [描述] 方塊。
從另一個 VSPackage 存取選項頁面
裝載,並且管理選項 頁面的 VSPackage 可以以程式設計方式存取來自另一個 VSPackage 使用 automation 模型。 例如,下列程式碼 VSPackage 會註冊為裝載選項頁面。
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
<ProvideOptionPage(GetType(MyOptionPage), "My Category", "My Grid Page", 0, 0, True)>
<Guid("6bb6942e-014c-489e-a612-a935680f703d")>
Public NotInheritable Class MyToolsOptions
Inherits 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;
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))
當ProvideOptionPageAttribute屬性註冊選項頁面、 AutomationProperties 鍵,如果在註冊頁面SupportsAutomation
屬性的引數是true
。 自動化會檢查此登錄項目,來尋找相關聯的 VSPackage 和自動化,然後透過裝載的選項 頁面上,在此情況下,我的格線頁中存取的屬性。
Automation 屬性的登錄路徑由合併ApplicationRegistryRoot,word、 AutomationProperties 及選項頁面類別目錄和名稱。 例如,如果 [選項] 頁面上有 My Category 類別,我的格線頁名稱,而ApplicationRegistryRoot,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp,則自動化屬性已登錄機碼,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My 格線頁。
注意
正式名稱,也就是我 Category.My Grid Page中,是這個機碼名稱子機碼值。