我正在创建excel加载项,其中单击菜单项或工具栏按钮,表单已打开。我已经将表单的最顶层设置为true,但它仍然是windows xp的所有应用程序的最顶层。我只需要保持最顶级的Microsoft Excel。
我在Visual Studio 2008中选择了Excel中的项目 - > 2003。
请告诉我如何以任何方式做到这一点........
答案 0 :(得分:9)
您可以将表单的所有者设置为Microsoft Excel窗口。在Windows中,owned windows始终显示在其所有者上方。对话框和Excel中的搜索框之类的东西都是拥有的窗口,这使得它们显示在其所有者之上。
您可以通过以下几种方式设置表单的父级:
这确实需要您了解Excel应用程序窗口句柄。
答案 1 :(得分:1)
[编辑 - 更改代码]
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
void func()
{
Form1 f = new Form1();
SetParent(f.Handle, (IntPtr)ThisAddIn.ExcelApplication.Hwnd);
f.Show();
}