gpt4 book ai didi

c# - 如何使用 C# 设置事件(即前景)Word 文档

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:25 25 4
gpt4 key购买 nike

我已经看过但未能找到解决我的问题的方法。我为 Word 2007 开发了一个加载项功能区,它提供了一组额外的加载和保存功能,以允许用户从定制系统加载和保存文档。

我的大部分工作正常 - 当用户请求打开文件时,它会被下载并保存到 AppData 文件夹,然后打开。但是,我遇到的问题是,如果用户打开 Word 并使用这个新的“加载”功能,空白的 Word 文档仍然存在,Word 非常愉快地打开新文档,但它没有获得焦点。

(我在 Windows 7 上,它在任务栏中为新文档创建了第二个“W”图标,但它不会像我使用普通的 Word 那样切换到它'开放'路线。)

我已尝试(根据此处其他地方的建议)将“可见”属性设置为 true,并调用 doc.Activate(),但都没有满足我的需要。我错过了什么?我用来打开文件的代码如下:

private void OK_Click(object sender, EventArgs e)
{
this.Close();
FES.FESServices wService = new FES.FESServices();
int request_id = wService.SubmitRequestFromAddIn(username, password, "RETR", "", textBox1.Text, "", "");
FES.FileRequestResponse response = wService.GetFileMembersFromAddIn(username, password, request_id);
if (response.ResponseType == "RETR")
{
byte[] data = wService.GetBytesForFilename(response.ResponseValue);
//MessageBox.Show("Loaded data for file...");
//MessageBox.Show(Application.UserAppDataPath);
FileStream fs = new FileStream(Application.UserAppDataPath + "\\" + response.ResponseValue.Substring(6).Split('~')[0], FileMode.Create, FileAccess.Write);
fs.Write(data, 0, (int)data.Length);
fs.Close();
object oMissing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.Documents.Open(
Application.UserAppDataPath + "\\" + response.ResponseValue.Substring(6).Split('~')[0], Visible:true
);
doc.Activate();
}
}

(我包含了 this.Close(),因为加载文档的函数保存在一个模态对话框中,如果不先关闭它,Word 会抛出一个关于用对话框切换文档的异常打开)。

感谢收到的任何帮助!

最佳答案

在模式对话框显示时运行此代码会干扰窗口激活。

我不确定这种干扰的确切机制是什么,但修复很简单。将代码移到对话框之外。在对 ShowDialog 的调用返回后立即执行此代码。

关于c# - 如何使用 C# 设置事件(即前景)Word 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14822070/

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