2010-11-19 73 views
0

我有兩個.net 2 winforms,每個都有自己的項目。項目1是主要形式,項目2是兒童形式。現在我想知道如果主窗體不再活動,如何讓子窗體自行閉合。winform自動關閉,如果主窗體關閉

在退出時殺死子表單不起作用,因爲主表可以被任務管理器殺死。

+0

是的,這是正確的 – 2010-11-19 18:44:02

回答

1

如果我理解正確,您稱之爲「子窗體」實際上是另一個在獨立進程中運行的WinForms應用程序?另外,我從你的「因爲主窗體可以被任務管理器殺死」評論)認爲你希望退出行爲對主應用程序被強行殺死的情況具有適應性。

一種方法是讓'孩子應用程序'收聽'主應用程序'的Process.Exited事件,如果它觸發則退出。

我想這將是這個樣子:

public Form1() 
{ 
    InitializeComponent(); 

    // You need to figure out how best to do this part. 
    // Also, what to do if the main-app isn't already running. 
    var mainAppProcess = Process.GetProcessesByName("MainApp").First(); 

    mainAppProcess.EnableRaisingEvents = true; 

    // Close the form when the other process exits. 
    mainAppProcess.Exited += 
     delegate { BeginInvoke(new Action(Close)); }; 
} 
2

您需要處理主窗體的OnClosing事件,您可以在其中關閉任何子窗體。您需要在main中具有子窗體的成員變量。