在 Visual Studio 托管包结构,从 DialogPage 派生的类通过添加 选项 页扩展 Visual Studio IDE 在 工具 菜单中。
实现特定 工具选项 页的与给定对象关联的 Vspackage 由 ProvideOptionPageAttribute 对象。
由于该环境实例化实现特定 工具选项 页的对象,则该特定页由 IDE 示:
工具选项 页应本身是实现的对象,而不是实现 VSPackage 的对象。
对象无法实现多个 工具选项 页。
注册为工具选项称为提供程序
支持用户配置的 VSPackage 通过 工具选项 该页将指示提供这些 工具选项 页的对象通过应用 ProvideOptionPageAttribute 实例适合于 Package 实现。
必须具有 ProvideOptionPageAttribute 一个实例每 DialogPage的 - 实现 工具选项 页的派生类型。
ProvideOptionPageAttribute 每个实例使用实现 工具选项 页,字符串包含一些该类别和子类别标识 工具选项 页的类型和资源信息注册该类型作为提供 工具选项 页。 有关更多信息,请参见 使用选项卡页。
保留的工具选项称为状态
如果 工具选项 页面实现移到自动注册支持启用, IDE 与其他 工具选项 页时将保留页的状态。 有关更多信息,请参见 使用选项卡页。
使用 ProvideProfileAttribute, VSPackage 中管理自己的持久性。 应使用持久性仅一个或其他方法。
实现 DialogPage 类
提供 DialogPage的 VSPackage 中实现的对象派生的类型可以利用以下继承的功能:
默认的用户界面窗口。
默认持久性 framework 提供任何,如果 ProvideProfileAttribute 应用于类,或者,如果将应用于类的 SupportsProfiles 属性设置为 ProvideOptionPageAttribute 的 true 。
自动化支持。
实现 工具选项 页的对象的最低要求使用 DialogPage 是公共属性的添加。
如果为 工具选项 页提供程序正确注册的类,然后其公共属性可在 工具 菜单的 选项 部分使用属性网格形式。
所有这些默认可以重写函数。 例如,创建更复杂的用户界面只需要重写 Window的默认实现。
示例
哪些操作。选项卡页的一个简单的 “hello world”实现。 将以下代码添加到 Visual Studio 包模板创建默认的项目受到所选 菜单命令 选项将足够演示选项页函数。
说明
下面的类定义了最小的 “hello world”选项卡页。 打开时,用户可以在属性网格的公共 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.");
}