演练:创建向导
向导(例如**“外接程序向导”**)是用来引导用户通过一系列操作以实现一些复杂的、重复性的或较难的任务的程序。 例如,Windows 使用向导连接网络资源和连接打印机等。
在 Visual Studio 中,向导通常会询问一系列问题,请求用户输入答案,然后利用这些结果生成代码。 但是,向导并不总是显示用户界面 (UI)。 可以对向导进行编程,从而以不可见方式在后台生成代码。
有三种不同类型的向导。
新建项目向导 - 顾名思义,此类向导用于为特殊类型的项目生成新代码,为用户提供一个起始点,用户可以在此基础上添加自己的代码。 这是最常用类型的向导。
“添加新项”向导 - 此类向导用于向项目中添加新项,例如 Web 窗体、文本文件、HTML 页和 XML 页等。
自定义向导 - 此类向导不是从对话框中调用的, 而是从外接程序、宏或其他类型的代码中直接调用的。 此类向导可能显示也可能不显示用户界面。 不论哪种情况都会生成代码。 通常,这种类型的向导使用得最少。
不论哪种类型的向导,都具有一些共同的特点。
它们都是 .NET 对象,可实现 IDTWizard 界面,并且具有关联的方法 Execute,此方法包含您希望向导运行的代码。
它们都使用 .vsz 文件以将自身显示在 Visual Studio 中。
它们都生成代码或执行其他任务。
您可以在创建的向导中自定义元素的外观。 向导通常由一个或多个窗口或页面组成。 页面可包括描述性图像(如放在页面的顶部或左侧)、标签说明、指令以及可放置导航控件的区域,其中导航控件是指像**“上一页”和“下一页”**这样的控件。
在 Visual C++ 中创建向导的过程与创建标准 Visual Studio 向导的过程稍有不同。 有关创建针对 Visual C++ 的向导的其他信息,请参见设计向导和创建自定义向导。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 这些过程是在“常规开发设置”处于活动状态时开发的。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
基本向导示例
此图片显示了**“外接程序向导”的一个面板,即一个“新建项目”类型的向导,它可引导您通过一系列步骤创建一个外接程序。 您可以自定义向导的外观,但“外接程序向导”是标准类型向导的一个典型示例。 完成的向导就成为“新建项目”或“添加新项”**复选框中的可用模板。
以下内容演示如何创建基本向导,并赋予其一个自定义图标(可选)。
使用 Visual Basic 和 Visual C# 创建基本向导
以管理员身份运行 Visual Studio。 注册向导需要更新注册表,因此它需要此权限。
创建一个名为 MyNewWizard 的新类库项目。
向项目中添加对 EnvDTE 和 EnvDTE80 的引用。
为此,右击该项目,然后单击**“添加引用”。 在“添加引用”对话框的“.NET”选项卡中,单击“EnvDTE”和“EnvDTE80”,然后单击“确定”**。
在类模块中,将引用添加到 EnvDTE 和 EnvDTE80,并实现 IDTWizard 接口。 对于此 Visual C# 示例,您还必须添加对 System.Windows.Forms 和 System.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)
将您希望向导运行的代码添加到 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 过程在向导启动时调用。
在**“解决方案资源管理器”中右击您的项目,单击“属性”打开“项目属性”页,单击“生成”选项卡,然后选中页面底部的“为 COM 互操作注册”**框。
在 AssemblyInfo.cs 文件中,找到 ComVisible 特性并将其设置为 true。
通过单击**“生成”菜单上的“生成解决方案”**,生成项目以创建类库 DLL。
为名为 MyNewWizard.vsz 的向导创建一个 .vsz 文本文件。
为此,创建现有 .vsz 文件(如位于 <Visual Studio 安装目录>\VC#\CSharpProjectItems\Windows Forms 中的任何 .vsz 文件)的一个副本,并将该副本重命名为“MyNewWizard.vsz”。
.vsz 文件是一个文本文件,它使 Visual Studio 能够识别向导,并在**“新建项目”或“添加新项”**对话框中显示该向导。 Wizard 参数应该设置为项目的 progID (Project.Classname) 或设置为 GUID。 有关更多信息,请参见 配置 .Vsz 文件来启动向导。
提示
(可选)您也可以为向导创建一个 VSDir 文件。 此文件中包含的信息将在“添加新项目”或“添加新文件”对话框中显示为对向导的说明。 该文件也使您可以在列表中指定图标和安排图标的位置。 有关更多信息,请参见 使用 .Vsdir 文件为“添加项”和“新建项目”对话框添加向导。
用以下内容替换 MyNewWizard.vsz 的内容:
VSWizard 7.0 Wizard=MyNewWizard.Class1 Param=First Item Param=Second Item
将新的 .vsz 文件保存在您希望向导所在的目录中。
对于本示例,我们希望向导出现在 Visual Basic 项目的**“添加新项”**对话框中,因此将 .vsz 文件保存在以下目录中:<Visual Studio 安装目录>\VB\VBProjectItems。
退出 Visual Studio,然后重新启动它。
这将强制 Visual Studio 读取新的 .vsz 文件。
创建一个新的 Visual Basic 项目,例如 Windows 应用程序项目。
右击该项目,指向**“添加项”,然后单击“新建项”**。
在**“添加新项”**对话框中应可看见新向导 (MyNewWizard)。
单击该向导,然后单击**“添加”**按钮。
您将看到消息“向导正在运行。”
为新向导显示自定义图标
在保存向导文件的同一目录中,放置一个与 .dll 文件具有相同基名称但扩展名为 .ico 的图标文件。
例如,如果向导名为 MyNewWizard.dll,则将 .ico 文件命名为 MyNewWizard.ico。
- 或 -
如果已创建一个 VSDir 文件,则在该文件中指定到该图标文件 (.ico) 的路径。
请参见
任务
参考
概念
使用 .Vsdir 文件为“添加项”和“新建项目”对话框添加向导