10

是否可以在另一个进程的主窗口上显示 WinForms 模式表单?

例如,我的 WinForms 应用程序由一个窗体组成,该窗体在另一个进程的主窗口上具有 PID x。

4

1 回答 1

19

您可以将其显示为对话框,如下所示:

Form1 frm = new Form1();
frm.ShowDialog(this);
frm.Dispose();

您传递当前IWin32Windowform您想成为所有者,因此如果您通过单击父表单的按钮调用它,只需传递this.

您希望能够获得IWin32Window另一个进程,这是可能的,但我不知道是否将表单显示为模态。

var proc = Process.GetProcesses().Where(x => x.ProcessName == "notepad").First();
IWin32Window w = Control.FromHandle(proc.MainWindowHandle);

using (Form1 frm = new Form1())
{
    frm.ShowDialog(w);
}

如果可能的话,这就是它的工作方式,但是,它似乎对我不起作用。

此链接可能会提供有关该主题的更多信息:如何使子进程窗口在我的进程中显示为模态?

于 2013-02-20T10:07:59.377 回答