use*_*557 4 c# dialog winforms
我有一个项目,其中弹出设置对话框(父).当用户点击继续时,将打开一个主对话框(Child).在主对话框中,用户可以重新编辑设置对话框(Parent).当用户单击X关闭设置对话框时,应用程序终止.我假设这是因为我们关闭了Parent并且它处理了它的所有子节点
是否可以在不关闭主对话框(子)的情况下关闭Parent(或隐藏它)?如果没有,以下修复是否有效?打开主对话框作为父对话并打开设置对话框(子)
在Program.cs文件中,您可能有这样的函数:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Run Code Online (Sandbox Code Playgroud)
此功能是应用程序的入口点.该Application.Run()函数运行应用程序的主循环.图形应用程序的主循环是事件处理程序触发事件,UI更新等的位置.如果事件(例如按下按钮)处理时间过长,则UI会挂起.为了防止这种情况发生,可以使用线程.
该Application.Run()函数被重载,因此,如果该函数具有参数(new Form1()在这种情况下),该形式成为"主"的形式,所以当窗体关闭主循环将退出.
要解决此问题,您需要删除参数,这将使主循环在窗体关闭时运行而不关闭:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生两个问题:
启动时不显示任何表单,因为我们从Main函数中删除了该表单.要解决此问题,您需要在main函数中创建一个新表单,并显示它:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
form.Show();
Application.Run();
}
Run Code Online (Sandbox Code Playgroud)关闭表单时,应用程序不会退出.如果您关闭所有表单,则该过程仍将继续运行,因此您需要Application.Exit();在希望应用程序退出时进行调用(例如,表单结束事件).
| 归档时间: |
|
| 查看次数: |
1982 次 |
| 最近记录: |