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
)
参数
- document
类型:Microsoft.Office.Interop.Word._Document
要测试的本机文档对象。尽管此参数的类型为 Microsoft.Office.Interop.Word._Document,但通常可将 Microsoft.Office.Interop.Word.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._Document 和 Microsoft.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 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。
请参见
参考
Microsoft.Office.Tools.Word 命名空间