创建使用托管包框架类的选项卡页

在 Visual Studio 托管包结构,从 DialogPage 派生的类通过添加 选项 页扩展 Visual Studio IDE 在 工具 菜单中。

实现特定 工具选项 页的与给定对象关联的 Vspackage 由 ProvideOptionPageAttribute 对象。

由于该环境实例化实现特定 工具选项 页的对象,则该特定页由 IDE 示:

  • 工具选项 页应本身是实现的对象,而不是实现 VSPackage 的对象。

  • 对象无法实现多个 工具选项 页。

注册为工具选项称为提供程序

支持用户配置的 VSPackage 通过 工具选项 该页将指示提供这些 工具选项 页的对象通过应用 ProvideOptionPageAttribute 实例适合于 Package 实现。

必须具有 ProvideOptionPageAttribute 一个实例每 DialogPage的 - 实现 工具选项 页的派生类型。

ProvideOptionPageAttribute 每个实例使用实现 工具选项 页,字符串包含一些该类别和子类别标识 工具选项 页的类型和资源信息注册该类型作为提供 工具选项 页。 有关更多信息,请参见 使用选项卡页

保留的工具选项称为状态

如果 工具选项 页面实现移到自动注册支持启用, IDE 与其他 工具选项 页时将保留页的状态。 有关更多信息,请参见 使用选项卡页

使用 ProvideProfileAttribute, VSPackage 中管理自己的持久性。 应使用持久性仅一个或其他方法。

实现 DialogPage 类

提供 DialogPage的 VSPackage 中实现的对象派生的类型可以利用以下继承的功能:

实现 工具选项 页的对象的最低要求使用 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.");
}

请参见

概念

自动为选项卡页支持

注册自定义选项卡页

使用选项卡页

创建使用自动化的选项卡页

使用创建互操作程序集的选项卡页

其他资源

用户设置和选项

选项卡页