我有一个 Silverlight 5.0 应用程序并提供 MS Word 自动化功能,用户可以在其中编辑/添加新文档。我浏览了 MSDN 页面,但在保存文档后找不到 MS Word 触发的任何事件。唯一谈论保存的事件是没有帮助的“DocumentBeforeSave”事件。我需要知道 MS Word 何时完成保存文档,以便准备好保存到服务器。
有人可以帮我弄这个吗?
任何想法都非常受欢迎。
我有一个 Silverlight 5.0 应用程序并提供 MS Word 自动化功能,用户可以在其中编辑/添加新文档。我浏览了 MSDN 页面,但在保存文档后找不到 MS Word 触发的任何事件。唯一谈论保存的事件是没有帮助的“DocumentBeforeSave”事件。我需要知道 MS Word 何时完成保存文档,以便准备好保存到服务器。
有人可以帮我弄这个吗?
任何想法都非常受欢迎。
using MSWord = Microsoft.Office.Interop.Word;
namespace ConsoleApplication4
{
class Program
{
static void Main()
{
var app = new MSWord.Application();
var doc = app.Documents.Open(@"..\..\myDoc.docx");
app.DocumentBeforeSave += app_DocumentBeforeSave;
}
static void app_DocumentBeforeSave(MSWord.Document Doc, ref bool SaveAsUI, ref bool Cancel)
{
app.DocumentBeforeSave -= app_DocumentBeforeSave;
Cancel = true;
Doc.Save();
if(Doc.Saved){
//Now you know the document has saved
}
app.DocumentBeforeSave += app_DocumentBeforeSave;
}
}
}
Save 方法不在单独的线程上运行,因此它仅在 Save 完成后返回。
DocumentBeforeSave事件接受一个布尔调用Cancel ,这是通过 ref 参数传递的,并将其设置为 true 会取消即将发生的保存。
您可以将其设置为 true,然后自己调用Save,这样您将知道保存何时完成,因为它在同一个线程上运行,如下所示:
using MSWord = Microsoft.Office.Interop.Word;
namespace ConsoleApplication41
{
class Program
{
static void Main()
{
var app = new MSWord.Application();
var doc = app.Documents.Open(@"..\..\myDoc.docx");
app.DocumentBeforeSave += app_DocumentBeforeSave;
}
static void app_DocumentBeforeSave(MSWord.Document Doc, ref bool SaveAsUI, ref bool Cancel)
{
Cancel = true;
Doc.Save();
//Now you know the document has saved
}
}
}