2013-02-20 60 views
3

是否可以在另一個進程的主窗口上顯示WinForms模式表單?WinForms:在其他應用程序的主窗口上顯示錶單模式

例如,我的WinForms應用程序由一個窗體組成,這個窗體在PID x的另一個進程的主窗口上模態化。

+1

嘗試「最頂層=真正的」財產? – Ritro 2013-02-20 10:42:36

+1

不完全是我想要的,但會在某些情況下工作... – Harry13 2013-02-21 06:18:34

回答

9

您可以顯示它作爲一個對話框,如下所示:

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?

+0

另一個過程? – 2013-02-20 10:08:58

+0

'form.ShowDialog()'在另一個進程中打開它? – 2013-02-20 10:10:38

+0

例如在系統上運行的第二個應用程序。在同一個應用程序中不是模式形式 – Harry13 2013-02-20 10:10:58