WinForms:在其他应用程序的主窗口上显示表单模式

Har*_*y13 7 c# modal-dialog winforms

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

例如,我的WinForms应用程序包含一个表单,该表单是模态的,而另一个进程的主窗口是PID x.

Ada*_*ean 14

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

Form1 frm = new Form1();
frm.ShowDialog(this);
frm.Dispose();
Run Code Online (Sandbox Code Playgroud)

您传递当前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);
}
Run Code Online (Sandbox Code Playgroud)

这是如何工作的,如果有可能的话,它似乎对我不起作用.

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