PowerPoint 2007仅公开一个演示文稿关闭事件( PresentationClose ),该事件在演示文稿关闭之前引发。

在我正在处理的几段代码中,我需要跟踪打开的演示文稿,因此要对其中的一个关闭做出反应。

通常,PowerPoint提出的事件就足够了。除以下情况外。

如果演示文稿在关闭时尚未保存,PowerPoint将显示一个对话框,询问用户是否要保存其演示文稿。如果用户单击“是”或“否”,则一切正常,因为演示文稿最终将关闭。但是他也可以选择取消关闭...

在这种情况下,将引发close事件,演示文稿仍然存在,但是我的应用程序不知道。

有人可以给我一些解决方法吗?也许是用户单击“取消”后引发了一个事件?

最佳答案

您可能想要 PresentationBeforeClose 中添加的 PresentationCloseFinal PowerPoint 2010
如果用户在提示时单击“是”进行保存,然后单击“取消”退出“保存演示文稿”窗口,则可能还会出现同样的问题。这仍然可以使演示文稿在应用程序中保持 Activity 状态。
我想出的PowerPoint 2007解决方法(inspiration from here):

void Application_PresentationClose(PowerPoint.Presentation presentation)
{
    if (presentation.Saved == MsoTriState.msoFalse)
    {
        MessageBoxResult savePrompt = MessageBox.Show(string.Format("Do you want to save the changes you made to {0}?", presentation.Application.ActiveWindow.Caption), Globals.ThisAddIn.Application.Name, MessageBoxButton.YesNoCancel, MessageBoxImage.Warning, MessageBoxResult.Yes);
        if (savePrompt == MessageBoxResult.Yes)
            System.Windows.Forms.SendKeys.Send("Y"); // trigger default SaveAs prompt
        else if (savePrompt == MessageBoxResult.No)
            System.Windows.Forms.SendKeys.Send("N"); // discard presentation
        else
            System.Windows.Forms.SendKeys.Send("{ESC}"); // disables default SaveAs prompt
    }
}

关于events - PowerPoint,演示文稿关闭事件后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9097230/

10-08 21:02