0

我有一个 Silverlight 5.0 应用程序并提供 MS Word 自动化功能,用户可以在其中编辑/添加新文档。我浏览了 MSDN 页面,但在保存文档后找不到 MS Word 触发的任何事件。唯一谈论保存的事件是没有帮助的“DocumentBeforeSave”事件。我需要知道 MS Word 何时完成保存文档,以便准备好保存到服务器。

有人可以帮我弄这个吗?

任何想法都非常受欢迎。

4

2 回答 2

0
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;
        }
    }
}
于 2013-10-31T08:50:54.427 回答
0

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
        }
    }
}
于 2013-07-23T11:27:41.053 回答