我有一个项目,其中弹出一个设置对话框(父级)。当用户点击“继续”时,将打开一个主对话框(子级)。
在主对话框中,用户可以重新编辑设置对话框(父级)。当用户单击 X 关闭设置对话框时,应用程序终止。
我认为这是因为我们关闭了父级并处理了它的所有子级
是否可以在不关闭主对话框(子对话框)的情况下关闭父对话框(或隐藏它)?
如果没有,下面的修复会起作用吗?
作为父级打开主对话框并使其打开设置对话框(子级)
In the Program.cs
文件,你可能有这样的函数:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
该函数是您的应用程序的入口点。这Application.Run()
函数运行主循环的应用程序。这主循环图形应用程序的事件处理程序触发事件、UI 更新等的地方。如果事件(例如按下按钮)处理时间过长,UI 将挂起。为了防止这种情况发生,可以使用线程。
The Application.Run()
函数是重载的,因此如果函数有参数(new Form1()
在这种情况下),该窗体成为“主”窗体,因此当窗体关闭时主循环将退出。
要解决此问题,您需要删除该参数,这将使主循环在窗体关闭时运行而不关闭:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}
然而,这会产生两个问题:
-
启动时不显示任何表单,因为我们将其从Main
功能。要解决此问题,您需要在主函数中创建一个新表单,并显示它:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
form.Show();
Application.Run();
}
当您关闭表单时,应用程序不会退出。如果关闭所有表单,该进程仍将运行,因此您需要调用Application.Exit();
当您希望应用程序退出时(例如表单关闭事件)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)