我有一个应用程序可以打开新的Word文档,让用户更新和保存,然后他们可以通过单击右上角的X来关闭Word,或者他们可以关闭应用程序中的单词。
问题出现在用户进行编辑,单击Word右上角的 X ,显示保存对话框,用户忘记单击保存,然后尝试从应用程序关闭文档时。应用程序认为它使用以下代码行成功关闭了文档:
WordApp.Documents[docUri].Close(WdSaveOptions.wdDoNotSaveChanges);
但是对话框仍处于打开状态且doc尚未关闭。代码中没有例外或警告。
有没有办法检查现有的打开对话框窗口并绕过带代码的打开对话框?
答案 0 :(得分:0)
这不是我解决这个问题的理想方法,但就目前而言,它有效......
当您希望关闭文档时打开一个对话框窗口时,您可以捕获COMException并读取HResult ID以控制您对异常的反应。以下是我发现的Open Dialog问题以及Word意外关闭。
catch (System.Runtime.InteropServices.COMException ex)
{
switch (ex.HResult)
{
case -2147417846: //Dialog box is open and blocking us
context.Clients.All.addMessage("CloseWord", "Can't close Word, please check for open dialog box");
return;
case -2147023174: //Word Instance died without us knowing, need to set back to null to recover
context.Clients.All.addMessage("CloseWord", "Word Failed, attempting to recover...");
break;
default: //this is to catch the unknown and bubble up the details
context.Clients.All.addMessage(
string.Format("CloseWord", "Oops... Something went wrong Code {0} Message: {1}", ex.HResult, ex.Message));
return;
}
}