藉由建立 [選項] 頁管理套件架構類別
在Visual Studio受管理的封裝架構類別衍生自DialogPage延伸Visual Studio IDE 加上選項下的網頁工具功能表。
物件實作給定工具選項頁面是依特定的 VSPackages 相關聯ProvideOptionPageAttribute物件。
因為環境會實作特定的物件具現化工具選項網頁時,ide 就會顯示該特定的頁面:
A 工具選項應該執行頁面,在其本身的物件,而非上實作 VSPackage 的物件。
物件不能實作多個工具選項的網頁。
工具選項頁提供者註冊
VSPackage 支援使用者設定透過工具選項頁面表示的物件,提供這些工具選項頁面所套用的例項ProvideOptionPageAttribute套用至Package實作。
必須有一個執行個體的ProvideOptionPageAttribute的每個DialogPage-衍生型別實作工具選項頁面。
每個執行個體ProvideOptionPageAttribute實作的型別會使用工具選項一頁,包含使用的類別和子類別,用來識別的字串工具選項頁,以及註冊型別提供的資源資訊工具選項頁面。 如需詳細資訊,請參閱 使用 [選項] 頁。
保存的工具選項頁面狀態
如果工具選項 頁面實作使用權係搭配自動化支援已啟用,IDE 會保存網頁狀態,以及其他所有的 工具選項的網頁。 如需詳細資訊,請參閱 使用 [選項] 頁。
VSPackage 可以管理它自己的持續性,藉由使用ProvideProfileAttribute。 應該使用一部或持續性的其他方法。
實作的 DialogPage 類別
物件提供的 VSPackage 實作DialogPage-衍生型別可以利用下列繼承的功能:
預設的使用者介面] 視窗中。
A 預設持續性機制,可以使用任一個 if ProvideProfileAttribute套用至類別,或者如果SupportsProfiles屬性設定為 [ true的ProvideOptionPageAttribute ,會套用至類別。
自動化的支援。
物件實作的最低需求工具選項頁面使用DialogPage是加入減少公用屬性。
如果正確地登錄中的類別,為工具選項 頁提供者,則可公開屬性為 [可用的 選項 區段中的 工具格式的屬性方格中的功能表。
可覆寫這些預設功能。 例如,若要建立更複雜的使用者介面要求只能覆寫的預設實作Window。
範例
接下來是簡單的"hello 世界 」 實作的 [選項] 頁面。 將下列程式碼加入至預設的專案建立 Visual Studio 的封裝範本,內含的功能表命令選取選項將會適當地示範選項] 頁面的功能。
描述
下列類別會定義最小的"hello 世界 」 選項頁面。 當開啟時,使用者可以設定大眾HelloWorld在屬性方格中的屬性。
程式碼
Imports System
Imports Microsoft.VisualStudio.Shell
Namespace Company.UIUserSettingsToolsOptionsPages
Class HelloWorldOptions
Inherits DialogPage
Private m_helloWorld As Boolean = True
Public Property HelloWorld() As Boolean
Get
Return m_helloWorld
End Get
Set(ByVal value As Boolean)
m_helloWorld = value
End Set
End Property
End Class
End Namespace
using System;
using Microsoft.VisualStudio.Shell;
namespace Company.UIUserSettingsToolsOptionsPages
{
class HelloWorldOptions : DialogPage
{
bool helloWorld = true;
public bool HelloWorld
{
get { return helloWorld; }
set { helloWorld = value; }
}
}
}
描述
將下列屬性套用至套件類別讓頁面的選項可載入封裝時。 數字是任意 Id 的類別及資源] 頁面上,而且最後的布林值會指定頁面是否支援自動化。
程式碼
<PackageRegistration(UseManagedResourcesOnly:=True)> _
<DefaultRegistryRoot("Software\Microsoft\VisualStudio\9.0")> _
<InstalledProductRegistration(False, "#110", "#112", "1.0", IconResourceID:=400)> _
<ProvideLoadKey("Standard", "1.0", "Package Name", "Company", 1)> _
<ProvideMenuResource(1000, 1)> _
<Guid(GuidList.guidPkgString)> _
<ProvideOptionPage(GetType(HelloWorldOptions), "Hello World Category", "Hello World Page", 1000, 1001, False)> _
Public NotInheritable Class UIUserSettingsToolsOptionsPagesPackage
Inherits Package
[ProvideOptionPage(typeof(HelloWorldOptions),
"Hello World Category", "Hello World Page",
1000, 1001, false)]
描述
下列的事件處理常式會顯示 [選項] 頁面中的屬性設定值而定的結果。 它會使用GetDialogPage與結果的方法,明確轉換成自訂選項頁面型別,來存取網頁所公開的屬性。
如果是由封裝範本所產生的專案中,呼叫這個函式,從MenuItemCallback函式來將它附加至預設命令加入至工具功能表。
程式碼
Private Sub ShowHelloWorld(ByVal sender As Object, ByVal e As EventArgs)
Dim hw = TryCast(GetDialogPage(GetType(HelloWorldOptions)), HelloWorldOptions)
If hw.HelloWorld = True Then
MessageBox.Show("Hello World!")
Else
MessageBox.Show("Goodbye.")
End If
End Sub
private void ShowHelloWorld(object sender, EventArgs e)
{
var hw = GetDialogPage(typeof(HelloWorldOptions))
as HelloWorldOptions;
if (hw.HelloWorld == true)
{
MessageBox.Show("Hello World!");
}
else MessageBox.Show("Goodbye.");
}