对办公室项目中对象的全局访问

创建 Office 项目时,Visual Studio 将在项目中自动生成一个名为 Globals 的类。 可以使用 Globals 类在运行时从项目中的任何代码访问多个不同的项目项。

适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅办公室应用程序和项目类型提供的功能。

如何使用 Globals 类

Globals 是一个静态类,该类将对某些项的引用保留在你的项目中。 通过使用 Globals 类,可在运行时从项目中的任何代码访问以下各项:

  • Excel 工作簿或模板项目中的 ThisWorkbookSheetn 类。 可以通过使用 Globals.ThisWorkbookSheetn 属性访问这些对象。

  • Word 文档或模板项目中的 ThisDocument 类。 可以通过使用 Globals.ThisDocument 属性访问此对象。

  • ThisAddIn VSTO 外接程序项目中的类。 可以通过使用 Globals.ThisAddIn 属性访问此对象。

  • 项目中通过使用功能区设计器自定义的所有功能区。 可以通过使用 Globals.Ribbons 属性访问功能区。 有关详细信息,请参阅 运行时访问功能区。

  • Outlook VSTO 外接程序项目中的所有 Outlook 窗体区域。 可以通过使用 Globals.FormRegions 属性访问这些窗体区域。 有关详细信息,请参阅 运行时访问窗体区域。

  • 一个工厂对象,可用于在面向 .NET Framework 4 或 .NET Framework 4.5 的项目中在运行时创建功能区控件和托管项。 可以通过使用 Globals.Factory 属性访问此对象。 此对象是实现以下接口之一的类的实例:

    例如,当用户单击 Excel 的文档级项目中的操作窗格上的按钮时,你可以使用 Globals.Sheet1 属性将文本插入到 NamedRange 上的 Sheet1 控件中。

    private void button1_Click(object sender, EventArgs e)
    {
        Globals.Sheet1.namedRange1.Value2 = this.textBox1.Text;
    }
    

在初始化文档或 VSTO 外接程序之前尝试使用该 Globals 类的代码可能会引发运行时异常。 例如,声明一个类级变量时使用 Globals 可能会失败,因为在对声明的对象进行实例化之前,可能不会使用对所有主机项的引用将 Globals 类初始化。

注意

永远不会在设计时初始化 Globals 类,控件实例由设计器创建。 这意味着,如果在用户控件类中创建使用类属性Globals的用户控件,则必须在尝试使用返回的对象之前检查该属性是否返回 null