确定MS Word是否完成了保存文档

时间:2013-07-23 10:37:59

标签: silverlight-5.0 office-interop

我有一个Silverlight 5.0应用程序和prvoide MS Word Automation功能,用户可以在其中编辑/添加新文档。我已经访问过MSDN页面,但在保存文档后找不到MS Word触发的任何事件。关于保存的唯一事件是“DocumentBeforeSave”事件,它没有帮助。我需要知道MS Word何时完成保存文档,以便可以保存到服务器。

有人可以帮我这个吗?

任何想法都非常适合。

2 个答案:

答案 0 :(得分:0)

Save方法不会在单独的线程上运行,因此只有在Save完成后才会返回。

DocumentBeforeSave 事件接受布尔调用取消这与ref参数一起传递,并将其设置为true会取消即将发生的保存。< / p>

您可以将其设置为true,然后自己调用保存,这样您就可以知道保存何时完成,因为它在同一个线程上运行,如下所示:

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
        }
    }
}

答案 1 :(得分: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;
        }
    }
}