使窗口成为Interop.Excel Com对象

时间:2016-02-25 00:11:20

标签: 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在这里不起作用,因为窗口最终始终是焦点。

1 个答案:

答案 0 :(得分:3)

向Hans Passant致敬,他指示我在上面的评论中给出答案。

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

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

通过这种方式,我的视图现在被指定为主要Excel窗口的子视图。