1
我有一個像我的應用程序中的Windows資源管理器模塊。 我想處理該模塊中的單詞和excel文件的打開和關閉。 當我開放f.e. 4-5個文件在同一時間,關閉處理程序無法正常工作。MS互操作Word,Excel多個打開的文件DocumentBeforeClose處理
問題是:有時在關閉Word應用程序後,我的應用程序不會在wordDocEvents_DocumentBeforeClose函數的開始處停止斷點。 似乎與相關的進程間通信有關,因爲每個打開的文件都是一個新的進程。
如果它是已知的問題,請幫助,否則我會嘗試在我的代碼中做一些事情。
代碼快照:
if (_wordApp == null)
{
_wordApp = new Word.Application();
_wordDocEvents = (Word.ApplicationEvents4_Event)_wordApp;
if (!isLocked)
{
//_wordDocEvents.Quit += new Word.ApplicationEvents4_QuitEventHandler(wordDocEvents_Quit);
_wordDocEvents.DocumentBeforeClose += new Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(wordDocEvents_DocumentBeforeClose);
_wordDocEvents.DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(wordDocEvents_DocumentBeforeSave);
_wordApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
}
}
_wordApp.Visible = true;
Word.Document oDoc = _wordApp.Documents.Open(fileName, null, isLocked);
oDoc.Activate();
_wordApp.Visible = true;
_wordApp.Activate();
關閉處理程序:
void wordDocEvents_DocumentBeforeClose(Word.Document doc, ref bool Cancel)
{
if (!doc.Saved)
{
MessageBoxResult res = MessageBox.Show(ApplicationValues.GetResourceString("library_file_save_changes"), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question, MessageBoxResult.Yes, System.Windows.MessageBoxOptions.DefaultDesktopOnly);
switch (res)
{
case MessageBoxResult.Yes:
doc.Save();
break;
case MessageBoxResult.No:
doc.Saved = true;
break;
default:
Cancel = true;
return;
}
}
interopFileBeforeCloseHandler(doc.FullName, doc.ReadOnly);
}
你能弄明白嗎?我們遇到同樣的問題。 – animaonline
這個問題仍然沒有答案...?:(我也有同樣的問題..有時關閉事件觸發器,有時它不... –
我只是停止使用MS互操作,這是我的解決方案對不起:) – artos