如何:使用宏处理事件
在集成开发环境 (IDE) 中有两种类型的事件:一种应用于所有项目;另一种只应用于特定的项目类型。 应用于所有项目类型的事件的示例包括添加新文件,选择菜单选项和关闭窗口。 只应用于特定项目类型的事件的示例包括添加对项目的引用或 Web 引用。
该任务假定您知道如何访问宏开发环境和创建宏项目。 有关更多信息,请参见 使用宏自动执行重复性操作。
本示例演示如何响应应用于所有 Visual Studio 项目的窗口事件。 有关应用于所有语言的事件的更多信息,请参见 响应自动化事件。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 这些过程是在“常规开发设置”处于活动状态时开发的。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
捕获非特定语言的事件
在 MyMacros 中创建新的宏模块并将其命名为 CaptureEvents。
创建一个新宏时,默认情况下添加一个名为 EnvironmentEvents 的模块。 该模块定义 响应自动化事件 中列出的表中描述的很多事件对象。 在 EnvironmentEvents 模块中,已按如下方式声明模块级 WindowEvents 变量。
Public WithEvents windowEvents As EnvDTE.WindowEvents
在 EnvironmentEvents 模块中,使用宏 IDE 编辑器中的**“类名”和“方法名”**下拉框为变量创建 WindowClosing 事件处理例程,或剪切并粘贴下面的代码。
Public Sub windowEvents_WindowClosing( _ ByVal Window As EnvDTE.Window) Handles windowEvents.WindowClosing MsgBox("You are closing the window.") End Sub
返回到开发环境并关闭活动窗口。
出现消息框。 每当关闭活动窗口时,就会显示该消息。 如果不需要在每次关闭活动窗口时收到通知,请删除该事件处理程序。
向项目添加引用
本示例演示如何对向项目添加引用作出响应。 Events 属性中包含了特定于语言的事件。 该示例提供绑定到 ReferencesEvents 的特定于项目的应用程序。 也可以通过在 EnvironmentEvents 模块中定义处理程序来提供全局级别的事件处理程序。 有关更多信息,请参见如何:在宏中创建用于特定项目类型的事件处理程序。若要运行此示例,则必须在 Visual Studio IDE 中打开 Visual Basic 或 Visual C# 项目。
捕获 Visual Basic 或 Visual C# 事件
创建一个新的宏模块 CaptureRefEvents。
通过在宏集成开发环境 (IDE) 的**“项目”菜单上选择“添加引用...”,添加一个对 VSLangProj 的引用。 在“添加引用”对话框中选择“VSLangProj”,并单击“确定”,然后单击“添加”**。
在 EnvironmentEvents 模块中展开折叠的**“自动生成的代码,请不要修改”**部分,然后添加一个模块级的 ReferencesEvents 变量。
Dim WithEvents refEvents As VSLangProj.ReferencesEvents
使用编辑器中的**“类名”和“方法名”**下拉框为该变量创建事件处理例程。
Public Sub refEvents_ReferenceAdded(ByVal pReference As _ VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
右击**“Macro 资源管理器”中的 CaptureRefEvents 模块。 在下拉菜单中选择“新建宏”**。 剪切并粘贴下面的代码以初始化 refEvents 变量。
Public Sub ConnectRefEvents() Dim proj As VSLangProj.VSProject proj = CType(DTE.Solution.Projects.Item(1).Object, _ VSLangProj.VSProject) refEvents = proj.Events.ReferencesEvents End Sub
保存 ConnectRefEvents 宏。
在 Visual Studio IDE 中,打开 Visual Basic 或 Visual C# 项目。
运行 ConnectRefEvents 宏。
为 Visual Studio IDE 中的项目添加一个引用。
出现一个消息框,其中的文本为:“<引用名称> 已添加到该项目。”