将所有者设置为来自另一个流程表单的表单

本文关键字:表单 程表单 另一个 设置 所有者 | 更新日期: 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顺序放在所有者窗口前面,因为简单地调用上面的函数不会实现这一点。