我有一个Silverlight 5.0应用程序和prvoide MS Word Automation功能,用户可以在其中编辑/添加新文档。我已经访问过MSDN页面,但在保存文档后找不到MS Word触发的任何事件。关于保存的唯一事件是“DocumentBeforeSave”事件,它没有帮助。我需要知道MS Word何时完成保存文档,以便可以保存到服务器。
有人可以帮我这个吗?
任何想法都非常适合。
答案 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;
}
}
}