c# - 使窗口成为 Interop.Excel Com 对象的子对象

标签 c# .net excel office-interop excel-interop

这几乎是我需要的: How to open a child windows under parent window on menu item click in WPF?

但是,在这种情况下,我的父对象是 Office.Interop.Excel com 对象,而我的子对象是 System.Windows.Window 对象。我想知道是否有办法从 interop.excel 对象获取或转换 Window 对象。

我正在寻找的行为是,excel 工作表上弹出的窗口应该仅对 excel 应用程序位于最顶层。设置属性 TopMost 在这里不起作用,因为窗口最终总是成为焦点。

最佳答案

感谢 Hans Passant,他指导我找到上面评论中的答案。

Excel 的 Application.Hwnd 为我提供了 excel 窗口的句柄。为了将其转换为 System.Windows.Window 对象,我使用了以下内容:

var helper = new System.Windows.Interop.WindowInteropHelper(view);
helper.Owner = (System.IntPtr)excel.Application.Hwnd;

这样,我的 View 现在就被指定为 excel 主窗口的 subview 。

关于c# - 使窗口成为 Interop.Excel Com 对象的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35615819/

相关文章:

c# - String 未被识别为有效的 DateTime,因为星期几不正确

vba - 在 VBA 中创建验证列表

excel - VBA许多按钮指向同一个_Click sub

c# - 在 FTP 上上传文件

c# - 如何将 FileSteam 保存为 PDF 文件

c# - Entity Framework - 大写第一个属性名称字母

excel - 在指令中使用变量的内容

c# - 使用 String.Format 创建正则表达式

c# - 如何安全地将 API 凭据存储在 GitHub 上共享的 C# 文件中?

asp.net - EF 是否在 DbContext 的不同实例之间缓存实体?