我正在处理这个用于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();
}
答案 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;
}
}
当然,这只有在它发射两次并且你可以再次设置它时才有效。你最好的做法是弄清楚为什么它会两次射击并在源头修复它。