gpt4 book ai didi

c# - MS Word Document Before Close 事件不会取消

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:14 24 4
gpt4 key购买 nike

我有一个事件连接到 C# 中 Microsoft Word 文档的 DocumentBeforeClose 事件。

this.Application.DocumentBeforeClose +=
new MSWord.ApplicationEvents4_DocumentBeforeCloseEventHandler(Application_DocumentBeforeClose);

如果某些逻辑为真,我将取消标志设置为真,这样文档就不会关闭。然而,虽然事件被触发并且 Cancel 标志设置为 true,文档仍然关闭。

这是一个错误吗?

最佳答案

我终于明白了。我还需要将事件处理程序挂接到实际的 Word 文档 (Microsoft.Office.Tools.Word.Document) 对象。 (Tools.Word.Document 和 Interop.Word.Document 让我头疼...)

this.Application.DocumentBeforeClose += new Interop.Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(Application_DocumentBeforeClose);

Application_DocumentBeforeClose(Interop.Word.Document document, ref bool Cancel)
{
// Documents is a list of the active Tools.Word.Document objects.
if (this.Documents.ContainsKey(document.FullName))
{
// I set the tag to true to indicate I want to cancel.
this.Document[document.FullName].Tag = true;
}
}

public MyDocument()
{
// Tools.Office.Document object
doc.BeforeClose += new CancelEventHandler(WordDocument_BeforeClose);
}

private void WordDocument_BeforeClose(object sender, CancelEventArgs e)
{
Tools.Word.Document doc = sender as Tools.Word.Document;

// This is where I now check the tag I set.
bool? cancel = doc.Tag as bool?;
if (cancel == true)
{
e.Cancel = true;
}
}

因此,由于我所有的应用程序逻辑都是在 Application 类代码中完成的,所以我需要一种方法来向我的 MyDocument 类事件指示我想取消关闭事件。所以这就是为什么我使用标记对象来保存标志。

关于c# - MS Word Document Before Close 事件不会取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com