演练:创建向导

向导(例如**“外接程序向导”**)是用来引导用户通过一系列操作以实现一些复杂的、重复性的或较难的任务的程序。 例如,Windows 使用向导连接网络资源和连接打印机等。

在 Visual Studio 中,向导通常会询问一系列问题,请求用户输入答案,然后利用这些结果生成代码。 但是,向导并不总是显示用户界面 (UI)。 可以对向导进行编程,从而以不可见方式在后台生成代码。

有三种不同类型的向导。

  • 新建项目向导 - 顾名思义,此类向导用于为特殊类型的项目生成新代码,为用户提供一个起始点,用户可以在此基础上添加自己的代码。 这是最常用类型的向导。

  • “添加新项”向导 - 此类向导用于向项目中添加新项,例如 Web 窗体、文本文件、HTML 页和 XML 页等。

  • 自定义向导 - 此类向导不是从对话框中调用的, 而是从外接程序、宏或其他类型的代码中直接调用的。 此类向导可能显示也可能不显示用户界面。 不论哪种情况都会生成代码。 通常,这种类型的向导使用得最少。

不论哪种类型的向导,都具有一些共同的特点。

  • 它们都是 .NET 对象,可实现 IDTWizard 界面,并且具有关联的方法 Execute,此方法包含您希望向导运行的代码。

  • 它们都使用 .vsz 文件以将自身显示在 Visual Studio 中。

  • 它们都生成代码或执行其他任务。

您可以在创建的向导中自定义元素的外观。 向导通常由一个或多个窗口或页面组成。 页面可包括描述性图像(如放在页面的顶部或左侧)、标签说明、指令以及可放置导航控件的区域,其中导航控件是指像**“上一页”“下一页”**这样的控件。

在 Visual C++ 中创建向导的过程与创建标准 Visual Studio 向导的过程稍有不同。 有关创建针对 Visual C++ 的向导的其他信息,请参见设计向导创建自定义向导

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 这些过程是在“常规开发设置”处于活动状态时开发的。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

基本向导示例

Visual Studio 外接程序向导

此图片显示了**“外接程序向导”的一个面板,即一个“新建项目”类型的向导,它可引导您通过一系列步骤创建一个外接程序。 您可以自定义向导的外观,但“外接程序向导”是标准类型向导的一个典型示例。 完成的向导就成为“新建项目”“添加新项”**复选框中的可用模板。

以下内容演示如何创建基本向导,并赋予其一个自定义图标(可选)。

使用 Visual Basic 和 Visual C# 创建基本向导

  1. 以管理员身份运行 Visual Studio。 注册向导需要更新注册表,因此它需要此权限。

  2. 创建一个名为 MyNewWizard 的新类库项目。

  3. 向项目中添加对 EnvDTEEnvDTE80 的引用。

    为此,右击该项目,然后单击**“添加引用”。 在“添加引用”对话框的“.NET”选项卡中,单击“EnvDTE”和“EnvDTE80”,然后单击“确定”**。

在类模块中,将引用添加到 EnvDTEEnvDTE80,并实现 IDTWizard 接口。 对于此 Visual C# 示例,您还必须添加对 System.Windows.FormsSystem.Runtime.InteropServices 的引用。

Imports EnvDTE
Imports EnvDTE80
Public Class Class1
    Implements IDTWizard
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;
using EnvDTE80;
using System. Windows.Forms;

using System.Runtime.InteropServices;

namespace MyNewWizard
{

[ComVisible(true)]

[Guid("20184B81-7C38-4E02-A1E3-8D564EEC2D25"),

ProgId("MyNewWizard.Class1")]

    public class Class1 : IDTWizard
    {
    }
}

当将 Implements 语句添加到 Visual Basic 时,将光标置于行的结尾,按 Enter 以自动创建 Execute 方法过程。 但是对于 Visual C#,则必须手动添加 Execute 过程:

public class Class1 : IDTWizard
    {
    public void Execute(object Application, 
        int hwndOwner, ref object[] contextParams, 
        ref object[] customParams, 
        ref EnvDTE.wizardResult retval)
  1. 将您希望向导运行的代码添加到 Execute 过程。 对于本示例,我们将仅添加一个简单的消息框。

    您将具有以下对象:

    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Class1
        Implements IDTWizard
    
        Public Sub Execute(ByVal Application As Object, ByVal _
        hwndOwner As Integer, ByRef ContextParams() As Object, ByRef _
        CustomParams() As Object, ByRef retval As EnvDTE.wizardResult) _
        Implements EnvDTE.IDTWizard.Execute
            MsgBox("The wizard is now running.")
        End Sub
    End Class 
    
    using System.Text;
    using EnvDTE;
    using EnvDTE80;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace MyNewWizardCS
    {
        public class Class1 : IDTWizard
        {
    
        public void Execute(object Application, 
            int hwndOwner, ref object[] contextParams, 
            ref object[] customParams, 
            ref EnvDTE.wizardResult retval)
        {
            MessageBox.Show("The wizard is now running.");
        }
    }
    
    }
    

    Execute 过程在向导启动时调用。

  2. 在**“解决方案资源管理器”中右击您的项目,单击“属性”打开“项目属性”页,单击“生成”选项卡,然后选中页面底部的“为 COM 互操作注册”**框。

  3. 在 AssemblyInfo.cs 文件中,找到 ComVisible 特性并将其设置为 true。

  4. 通过单击**“生成”菜单上的“生成解决方案”**,生成项目以创建类库 DLL。

  5. 为名为 MyNewWizard.vsz 的向导创建一个 .vsz 文本文件。

    为此,创建现有 .vsz 文件(如位于 <Visual Studio 安装目录>\VC#\CSharpProjectItems\Windows Forms 中的任何 .vsz 文件)的一个副本,并将该副本重命名为“MyNewWizard.vsz”。

    .vsz 文件是一个文本文件,它使 Visual Studio 能够识别向导,并在**“新建项目”“添加新项”**对话框中显示该向导。 Wizard 参数应该设置为项目的 progID (Project.Classname) 或设置为 GUID。 有关更多信息,请参见 配置 .Vsz 文件来启动向导

    提示

    (可选)您也可以为向导创建一个 VSDir 文件。 此文件中包含的信息将在“添加新项目”“添加新文件”对话框中显示为对向导的说明。 该文件也使您可以在列表中指定图标和安排图标的位置。 有关更多信息,请参见 使用 .Vsdir 文件为“添加项”和“新建项目”对话框添加向导

  6. 用以下内容替换 MyNewWizard.vsz 的内容:

    VSWizard 7.0
    Wizard=MyNewWizard.Class1
    Param=First Item
    Param=Second Item
    
  7. 将新的 .vsz 文件保存在您希望向导所在的目录中。

    对于本示例,我们希望向导出现在 Visual Basic 项目的**“添加新项”**对话框中,因此将 .vsz 文件保存在以下目录中:<Visual Studio 安装目录>\VB\VBProjectItems。

  8. 退出 Visual Studio,然后重新启动它。

    这将强制 Visual Studio 读取新的 .vsz 文件。

  9. 创建一个新的 Visual Basic 项目,例如 Windows 应用程序项目。

  10. 右击该项目,指向**“添加项”,然后单击“新建项”**。

    在**“添加新项”**对话框中应可看见新向导 (MyNewWizard)。

  11. 单击该向导,然后单击**“添加”**按钮。

    您将看到消息“向导正在运行。”

为新向导显示自定义图标

  • 在保存向导文件的同一目录中,放置一个与 .dll 文件具有相同基名称但扩展名为 .ico 的图标文件。

    例如,如果向导名为 MyNewWizard.dll,则将 .ico 文件命名为 MyNewWizard.ico。

    - 或 -

  • 如果已创建一个 VSDir 文件,则在该文件中指定到该图标文件 (.ico) 的路径。

请参见

任务

如何:创建外接程序

参考

IDTWizard

Visual Studio 命令和开关

概念

自动化对象模型图表

使用 .Vsdir 文件为“添加项”和“新建项目”对话框添加向导

配置 .Vsz 文件来启动向导

其他资源

创建外接程序和向导