Visual Studio Tools for Office 项目事件

更新:2007 年 11 月

每个 Visual Studio Tools for Office 项目模板都会自动生成若干个事件处理程序。文档级自定义项的事件处理程序与应用程序级外接程序的事件处理程序稍有不同。

有关自定义项和外接程序的更多信息,请参见 Office 解决方案开发概述

文档级自定义项

Visual Studio Tools for Office 在文档级自定义项中提供新的或现有文档或工作表的已生成隐藏代码。这些代码引发两个不同的事件: Startup 和 Shutdown。

Startup 事件

在运行文档以及程序集中的所有初始化代码之后,将为每个宿主项(文档或工作表)引发 Startup 事件。这是要在其中运行代码的类构造函数中运行的最后一个事件。有关宿主项的更多信息,请参见宿主项和宿主控件概述

在创建文档级项目时,Visual Studio Tools for Office 会在生成的代码文件中为 Startup 事件创建事件处理程序:

  • 对于 Microsoft Office Word 项目,事件处理程序被命名为 ThisDocument_Startup。

  • 对于 Microsoft Office Excel 项目,事件处理程序具有以下名称:

    • Sheet1_Startup

    • Sheet2_Startup

    • Sheet3_Startup

    • ThisWorkbook_Startup

Shutdown 事件

即将卸载在其中加载代码的应用程序域时,会为每个宿主项(文档或工作表)引发 Shutdown 事件。在卸载时,不到万不得已不要在类中进行调用。

在创建文档级项目时,Visual Studio Tools for Office 会在生成的代码文件中为 Shutdown 事件创建事件处理程序:

  • 对于 Microsoft Office Word 项目,事件处理程序被命名为 ThisDocument_Shutdown。

  • 对于 Microsoft Office Excel 项目,事件处理程序具有以下名称:

    • Sheet1_Shutdown

    • Sheet2_Shutdown

    • Sheet3_Shutdown

    • ThisWorkbook_Shutdown

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

不要在文档的 Shutdown 事件处理程序执行期间以编程方式移除控件。Shutdown 事件发生时,文档的 UI 元素不再可用。如果要在应用程序关闭之前移除控件,请将代码添加到另一个事件处理程序中,如 BeforeClose 或 BeforeSave。

事件处理程序方法声明

传递给每个事件处理程序方法声明的参数都是相同的:sender 和 e。在 Excel 中,sender 参数引用的是工作表,例如 Sheet1 或 Sheet2;在 Word 中,sender 参数引用的是文档。e 参数指的是事件的标准参数,这在本例中没有使用。

下面的代码示例演示 Word 的文档级项目中的默认事件处理程序。

Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

End Sub

Private Sub ThisDocument_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Shutdown

End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
}

private void ThisDocument_Shutdown(object sender, System.EventArgs e)
{
}

下面的代码示例演示 Excel 的文档级项目中的默认事件处理程序。

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

下面的代码示例演示 Sheet1 类中的事件处理程序。其他宿主项类中事件处理程序的名称对应于类名。例如,在 Sheet2 类中,Startup 事件处理程序被命名为 Sheet2_Startup。在 ThisWorkbook 类中,Startup 事件处理程序被命名为 ThisWorkbook_Startup。

Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

End Sub

Private Sub Sheet1_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Shutdown

End Sub
private void Sheet1_Startup(object sender, System.EventArgs e)
{
}

private void Sheet1_Shutdown(object sender, System.EventArgs e)
{
}

应用程序级外接程序

Visual Studio Tools for Office 在应用程序级外接程序中提供生成的代码。这些代码引发两个不同的事件: StartupShutdown

Startup 事件

Startup 事件是在外接程序已加载且程序集中的所有初始化代码都已运行之后引发的。此事件由生成的代码文件中的 ThisAddIn_Startup 方法进行处理。

ThisAddIn_Startup 事件处理程序中的代码是第一个要运行的用户代码,除非外接程序重写 RequestComAddInAutomationService 方法。在这种情况下,ThisAddIn_Startup 事件处理程序在 RequestComAddInAutomationService 之后被调用。在 2007 Microsoft Office system 的外接程序中,如果外接程序重写 RequestService 方法,则 ThisAddIn_Startup 事件处理程序中的代码可能也会在此方法之后被调用。

有关外接程序的启动顺序的更多信息,请参见应用程序级外接程序的体系结构

Shutdown 事件

即将卸载在其中加载代码的应用程序域时,将引发 Shutdown 事件。此事件由生成的代码文件中的 ThisAddIn_Shutdown 方法进行处理。此事件处理程序是卸载外接程序时最后一个要运行的用户代码。

请参见

任务

如何:创建 Visual Studio Tools for Office 项目

概念

开发 Office 解决方案

对文档级自定义项进行编程

应用程序级外接程序编程

Visual Studio Tools for Office 项目模板概述