如果主窗体关闭,则winform自动关闭

时间:2010-11-19 18:30:10

标签: c# .net winforms

我有两个.net 2 winforms,每个都有自己的项目。项目1是主要形式,项目2是儿童形式。现在我想知道如果主要形式不再活跃,如何让孩子形成自我。

在退出时杀死子表单不起作用,因为主表单可以被任务管理器杀死。

2 个答案:

答案 0 :(得分:2)

您需要处理主窗体的OnClosing事件,您可以在其中关闭所有子窗体。您需要在main中拥有子窗体的成员变量。

答案 1 :(得分: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)); };
}