Microsoft Word AddIn DocumentBeforeSave应用程序事件触发两次

本文关键字:两次 AddIn Word DocumentBeforeSave 应用程序 事件 Microsoft | 更新日期: 2023-09-27 17:51:20

我在做这个Word的微软应用程序加载项。我有beforeavedocument事件触发两次。有没有一种方法可以只看一次?

这是AddIn_startup.

((Word.ApplicationEvents4_Event)app).DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(App_BeforeSaveDocument);

这是beforeavedocument事件处理程序,我有2个其他方法从Word中提取段落,然后发送套接字消息。此方法在Word保存事件发生时触发两次,

void App_BeforeSaveDocument(Word.Document document, ref bool saveAsUI, ref bool cancel)
    {
        extractParagraphInfo();
        handleMessage();
    }

Microsoft Word AddIn DocumentBeforeSave应用程序事件触发两次

我在自己的代码中查看了一下,看看事件是否触发了两次,但似乎没有。您可能需要确定事件再次触发的位置。同时,您可以在event方法中设置一个标志来阻止它两次执行此操作。

private bool beforeSave = false;
void App_BeforeSaveDocument(Word.Document document, ref bool saveAsUI, ref bool cancel)
{
    if(!beforeSave)
    {
        beforeSave = true;
        extractParagraphInfo();
        handleMessage();
    }
    else
    {
        beforeSave = false;
    }
}

当然,这只会工作,如果它触发两次,你可以再次设置它。你最好的做法是找出为什么它会发射两次,并在源头修复它。