将所有者设置为来自另一个流程表单的表单
本文关键字:表单 程表单 另一个 设置 所有者 | 更新日期: 2023-09-27 18:20:43
我有一个Form(父级)。此外,我还有来自另一个进程的Form(child)的句柄。我需要始终在父窗体的顶部显示子窗体,并且可以使用主窗体。
当我们调用时,它就起作用了
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void MainForm_Shown(object sender, EventArgs e)
{
var childForm = new Form();
childForm.Show(this);
}
}
此外,如果主窗体关闭,来自另一个进程的子窗体将继续工作。
我尝试使用pinvokeSetParent()函数,但它将子窗体设置为MDI。
调用传递GWL_HWNDPARENT
作为索引的SetWindowLongPtr
。
SetWindowLongPtr(OwnedWnd, GWL_HWNDPARENT, OwnerWnd);
您可能需要手动将拥有的窗口按z顺序放在所有者窗口前面,因为简单地调用上面的函数不会实现这一点。