在我开始之前,我已经用谷歌搜索了这个,并且有很多关于如何防止保存提示的帖子。我在显示保存提示时遇到问题。
我正在用 C# 构建文档生成系统的模板编辑部分。系统将编辑“dot”和“dotx”文件。在概述问题之前,我用于开发的环境正在运行 Visual Studio 2010 和 Word 2010。它最终会在其他版本上运行,但我想先让这些版本正常运行。
为了设置场景,我打开了一个表单,其中包含从存储过程(数据源)返回的列列表,以作为书签添加到文档中。我拥有所有的书签和拖放操作功能。当我关闭应用程序时,我会捕获“ApplicationEvents4_DocumentBeforeCloseEventHandler”事件来关闭表单。
当我关闭表格时,我会检查有多少文件是打开的。如果只打开一个文档,我会关闭提示用户保存更改的应用程序。但是,如果打开了多个文档(大多数人同时打开了许多不同的 word 文档),我会找到正确的文档并关闭它并设置标志以提示用户保存更改。
这就是问题发生的地方。此时,保存更改对话框永远不会出现,并且 Visual Studio 中的所有内容都冻结了。如果我在 Visual Studio 2010 上停止调试,文档会无限期地在任务栏中闪烁,如果您专注于它,它会消失并在没有提示的情况下保存更改。
这是处理表单关闭事件的代码:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if (app != null)
{
if (app.Documents.Count < 2)
{
this.TopMost = false;
((Word._Application)app).Quit();
app = null;
}
else
{
foreach (Word.Document document in app.Documents)
{
if (document.FullName.Equals(wordDoc.FullName))
{
object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges;
((Word._Document)wordDoc).Close(ref saveChanges);
break;
}
}
}
}
}
问题是这一行应该显示一个保存更改对话框:
((Word._Document)wordDoc).Close(ref saveChanges);
我试过调试这个没有太多运气。在这一行和
break;
line 允许程序在“关闭”行停止,但是当您“向前”或“继续”时,单词变得无响应,下一行的表单和断点也不会被命中。
任何帮助将不胜感激,因为这么简单的事情太烦人了。