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

时间:2013-02-20 10:05:44

标签: c# winforms modal-dialog

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

例如,我的WinForms应用程序由一个表单组成,该表单是另一个进程的主窗口上的模态,带有PID x。

1 个答案:

答案 0 :(得分:13)

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

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);
}

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

此链接可能会提供有关此主题的更多信息:How can I make a child process window to appear modal in my process?