0

Silverlight 5.0 アプリケーションを使用しており、ユーザーが新しいドキュメントを編集/追加できる MS Word オートメーション機能を提供しています。MSDN ページにアクセスしましたが、ドキュメントを保存した後に MS Word がトリガーするイベントが見つかりませんでした。保存について話している唯一のイベントは、役に立たない「DocumentBeforeSave」イベントです。サーバーに保存する準備ができているように、MS Word がドキュメントの保存をいつ終了するかを知る必要があります。

誰かがこれで私を助けることができますか?

どんなアイデアでも非常に高く評価されます。

4

2 に答える 2

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 に答える
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 に答える