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

时间:2015-06-01 15:35:58

标签: c# ms-word event-handling

我正在处理这个用于Word的Microsoft应用程序加载项。我有两次触发的BeforeSaveDocument事件。有没有办法只捕捉一次事件?

这是AddIn_startup。

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

这是BeforeSaveDocument事件处理程序,我有2个其他方法从Word中提取paragragraph然后发送套接字消息。当Word Save事件发生时,此方法将触发两次,

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

1 个答案:

答案 0 :(得分:0)

我在自己的代码中看过这个,看看事件是否会触发两次而且看起来不会。您可能需要确定事件再次触发的位置。 同时你可以在事件方法中设置一个标志来阻止它执行两次。

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

当然,这只有在它发射两次并且你可以再次设置它时才有效。你最好的做法是弄清楚为什么它会两次射击并在源头修复它。