我有两个.net 2 winforms,每个都有自己的项目。项目1是主要形式,项目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)); };
}