2010-10-11 3 views
1

Я пишу приложение, которое использует библиотеку InterPoint PowerPoint для Office 2010. Предполагается открыть PowerPoint, загрузить презентацию и дождаться, когда пользователь сохранит презентацию после внесения изменений. Я хочу, чтобы приложение загружало презентацию на сервер после обновления.События PowerPoint 2010 не запускаются на C#

Проблема, с которой я столкнулся, заключается в том, что события, когда сохраняется презентация, не запускаются события PresentationSave или PresentationBeforeSave.

Вот код, который я использовал:

private void startPPT() 
{ 
     app = new ApplicationClass(); 

     app.WindowState = PpWindowState.ppWindowMaximized; 
     app.Visible = MsoTriState.msoTrue; 

     app.PresentationBeforeSave += new EApplication_PresentationBeforeSaveEventHandler(app_PresentationBeforeSave); 
     app.PresentationSave += new EApplication_PresentationSaveEventHandler(app_PresentationSave); 

     Presentation ppt; 

     //check if it's pptx or ppt and open accordingly 
     FileInfo fi = new FileInfo(filename); 
     if (fi.Extension == ".pptx") 
     { 
      //version 2007 
      ppt = app.Presentations.Open2007(filename, MsoTriState.msoFalse, MsoTriState.msoFalse); 
     } 
     else 
     { 
      //version 2003 or older 
      ppt = app.Presentations.Open(filename, MsoTriState.msoFalse, MsoTriState.msoFalse); 
     } 
} 

    void app_PresentationSave(Presentation Pres) 
    { 
     MessageBox.Show("Saved"); 
    } 

Любые идеи, почему это не работает?

+0

ваш код работает для меня, спасибо –

ответ

1

Итак, оказалось, что мне пришлось использовать делегат в обработчике событий. Вот код, который работал, в случае, если кто нуждается в ней для справки:

private void startPPT() 
    { 
    // as above 
    } 

    private delegate void CallBackPPTSaved(Presentation p); 

    void app_PresentationSave(Presentation Pres) 
    { 
     this.Dispatcher.BeginInvoke(new CallBackPPT(PPTEventHandler), System.Windows.Threading.DispatcherPriority.Normal, Pres); 
    } 

    private void PPTEventHandler(Presentation p) 
    { 
     MessageBox.Show("Saved"); 
    } 
0

Это потому, что ваш код выше не звонит ppt.Save();, он просто звонит .Open().

+0

Но не событие PresentationSave срабатывать, а если пользователь сохраняет презентацию PowerPoint, нажав кнопка «Сохранить», как обычно? – subeeshb

Смежные вопросы