如何:使用宏处理事件

更新:2007 年 11 月

在集成开发环境 (IDE) 中有两种类型的事件:一种应用于所有项目;另一种只应用于特定的项目类型。应用于所有项目类型的事件的示例包括添加新文件,选择菜单选项和关闭窗口。只应用于特定项目类型的事件的示例包括添加对项目的引用或 Web 引用。

该任务假定您知道如何访问宏开发环境和创建宏项目。有关更多信息,请参见 使用宏自动执行重复性操作

本示例演示如何响应应用于所有 Visual Studio 项目的窗口事件。有关应用于所有语言的事件的更多信息,请参见 响应自动化事件

ee1f34as.alert_note(zh-cn,VS.90).gif说明:

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

捕获非特定语言的事件

  1. 在 MyMacros 中创建新的宏模块并将其命名为 CaptureEvents。

  2. 创建一个新宏时,默认情况下添加一个名为 EnvironmentEvents 的模块。该模块定义 响应自动化事件 中列出的表中描述的很多事件对象。在 EnvironmentEvents 模块中,已按如下方式声明模块级 WindowEvents 变量。

    Public WithEvents windowEvents As EnvDTE.WindowEvents
    
  3. 在 EnvironmentEvents 模块中,使用宏 IDE 编辑器中的“类名”和“方法名”下拉框为变量创建 WindowClosing 事件处理例程,或剪切并粘贴下面的代码。

    Public Sub windowEvents_WindowClosing( _
    ByVal Window As EnvDTE.Window) Handles windowEvents.WindowClosing
       MsgBox("You are closing the window.")
    End Sub
    
  4. 返回到开发环境并关闭活动窗口。

    出现消息框。每当关闭活动窗口时,就会显示该消息。如果不需要在每次关闭活动窗口时收到通知,请删除该事件处理程序。

向项目添加引用

本示例演示如何对向项目添加引用作出响应。Events 属性中包含了特定于语言的事件。该示例提供绑定到 ReferencesEvents 的特定于项目的应用程序。也可以通过在 EnvironmentEvents 模块中定义处理程序来提供全局级别的事件处理程序。有关更多信息,请参见如何:在宏中创建用于特定项目类型的事件处理程序。若要运行此示例,则必须在 Visual Studio IDE 中打开 Visual Basic、Visual J# 或 Visual C# 项目。

捕获 Visual Basic、Visual J# 或 Visual C# 事件

  1. 创建一个新的宏模块 CaptureRefEvents。

  2. 通过在宏集成开发环境 (IDE) 的“项目”菜单上选择“添加引用…”,添加一个对 VSLangProj 的引用。在“添加引用”对话框中选择“VSLangProj”,并单击“确定”,然后单击“添加”。

  3. 在 EnvironmentEvents 模块中展开折叠的“自动生成的代码,请不要修改”部分,然后添加一个模块级的 ReferencesEvents 变量。

    Dim WithEvents refEvents As VSLangProj.ReferencesEvents
    
  4. 使用编辑器中的“类名”和“方法名”下拉框为该变量创建事件处理例程。

    Public Sub refEvents_ReferenceAdded(ByVal pReference As _
    VSLangProj.Reference) Handles refEvents.ReferenceAdded
       MsgBox(pReference.Name & " was added to the project.")
    End Sub
    
  5. 右击“宏资源管理器”中的 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
    
  6. 保存 ConnectRefEvents 宏。

  7. 在 Visual Studio IDE 中打开一个 Visual Basic、Visual C# 或 Visual J# 项目。

  8. 运行 ConnectRefEvents 宏。

  9. 为 Visual Studio IDE 中的项目添加一个引用。

    出现一个消息框,其中的文本为:“<引用名称> 已添加到该项目。”

请参见

参考

Events

Events2