gpt4 book ai didi

c# - 关闭父级而不关闭子级

转载 作者:太空狗 更新时间:2023-10-30 00:33:21 26 4
gpt4 key购买 nike

我有一个项目,其中会弹出一个设置对话框(父级)。当用户点击继续时,将打开一个主对话框(子)。在主对话框中,用户可以重新编辑设置对话框(Parent)。当用户单击 X 关闭设置对话框时,应用程序终止。我认为这是因为我们关闭了 Parent 并且它处置了它的所有 child

是否可以在不关闭主对话框(子对话框)的情况下关闭(或隐藏它)父对话框?如果不是,下面的修复会起作用吗?以 Parent 身份打开 Main Dialog 并使其打开设置对话框(Child)

最佳答案

Program.cs 文件中,您可能有这样一个函数:

    static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

此函数是您应用程序的入口点。 Application.Run() 函数运行应用程序的主循环。图形应用程序的主循环 是事件处理程序触发事件、更新 UI 等的地方。如果事件(例如按下按钮)处理时间过长,则 UI 会挂起。为防止这种情况发生,可以使用线程。

Application.Run() 函数被重载,因此如果该函数有一个参数(在本例中为 new Form1()),表单将成为“main” ' 表单,因此主循环将在表单关闭时退出。

要解决此问题,您需要删除该参数,这将使主循环在表单关闭时运行而不关闭:

    static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}

但是,这会产生两个问题:

  1. 没有窗体在启动时显示,因为我们从 Main 函数中删除了它。要解决这个问题,您需要在主函数中创建一个新表单,并显示它:

    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    Form1 form = new Form1();
    form.Show();

    Application.Run();
    }
  2. 关闭表单时应用程序不会退出。如果您关闭所有表单,该进程仍将运行,因此您需要在您希望应用程序退出时调用 Application.Exit();(例如表单关闭事件)。

关于c# - 关闭父级而不关闭子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com