是否可以在另一个进程的主窗口上显示WinForms模式表单?
例如,我的WinForms应用程序由一个表单组成,该表单是另一个进程的主窗口上的模态,带有PID x。
答案 0 :(得分:13)
您可以将其显示为对话框,如下所示:
Form1 frm = new Form1();
frm.ShowDialog(this);
frm.Dispose();
您传递了您想要成为所有者的当前IWin32Window
或form
,因此如果您通过点击父表单上的按钮来调用它,只需通过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);
}
这是如何工作的,如果有可能的话,它似乎对我不起作用。
此链接可能会提供有关此主题的更多信息:How can I make a child process window to appear modal in my process?