ApplicationFactory.HasVstoObject 方法

返回一个值,该值指示是否已为指定的本机文档对象创建了一个 Microsoft.Office.Tools.Word.Document 宿主项。

命名空间:  Microsoft.Office.Tools.Word
程序集:  Microsoft.Office.Tools.Word(在 Microsoft.Office.Tools.Word.dll 中)

语法

声明
Function HasVstoObject ( _
    document As _Document _
) As Boolean
bool HasVstoObject(
    _Document document
)

参数

返回值

类型:System.Boolean
如果已为指定的 Microsoft.Office.Interop.Word.Document 对象创建了 Microsoft.Office.Tools.Word.Document 宿主项,则为 true;否则为 false。

备注

您可以在应用程序级外接程序中调用此方法,在关闭或保存 Word 文档之前检测要保持的托管控件是否存在。 有关演示如何在 Word 文档中保持控件的示例,请参见 Word Add-In Dynamic Controls Sample

提示

document 参数属于 Microsoft.Office.Interop.Word._Document 类型,后者是 Microsoft.Office.Interop.Word.Document 的父接口。 因此,此方法可以接受这两种类型的对象:Microsoft.Office.Interop.Word._DocumentMicrosoft.Office.Interop.Word.Document。 通常情况下,引用 Word 文档时,使用 Microsoft.Office.Interop.Word.Document

示例

下面的代码示例检查当前文档是否有关联的宿主项,如果有,则获取该宿主项。 如果文档中存在托管控件,则该示例会显示一个警告消息,提示用户在保存文档时将不会保持托管控件。 此代码示例使用 DocumentBeforeSave 事件的事件处理程序来执行检查。 若要使用此代码,请从针对 .NET Framework 4 的 Word 外接程序项目中的 ThisAddIn 类中运行此代码。

Private Sub Application_DocumentBeforeSave( _
    ByVal Doc As Microsoft.Office.Interop.Word.Document, _
    ByRef SaveAsUI As Boolean, _
    ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave

    If Globals.Factory.HasVstoObject(Doc) = True Then
        Dim vstoDoc As Document = Globals.Factory.GetVstoObject(Doc)
        If vstoDoc.Controls.Count > 0 Then
            System.Windows.Forms.MessageBox.Show( _
                "The VSTO controls are not persisted when you save this document.", _
                "Controls Persistence", _
                System.Windows.Forms.MessageBoxButtons.OK, _
                System.Windows.Forms.MessageBoxIcon.Warning)
        End If
    End If
End Sub
void Application_DocumentBeforeSave(
    Microsoft.Office.Interop.Word.Document Doc, ref bool SaveAsUI, 
    ref bool Cancel)
{
    if (Globals.Factory.HasVstoObject(Doc) == true)
    {
        Document vstoDoc = Globals.Factory.GetVstoObject(Doc);
        if (vstoDoc.Controls.Count > 0)
        {
            System.Windows.Forms.MessageBox.Show(
                "The VSTO controls are not persisted when you save this document.",
                "Controls Persistence",
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Warning);
        }
    }
}

.NET Framework 安全性

请参见

参考

ApplicationFactory 接口

Microsoft.Office.Tools.Word 命名空间

其他资源

在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

从文档级自定义项中的本机 Office 对象获取扩展对象

Word Add-In Dynamic Controls Sample