C# - 打开另一个窗体后关闭应用程序时,应用程序继续在后台运行

本文关键字:应用程序 继续 运行 后台 另一个 窗体 | 更新日期: 2023-09-27 18:01:12

当我单击"关于"时,将打开一个新表单,并且主表单隐藏。我在"关于"按钮上有一个关闭按钮,该按钮关闭"关于"窗体,并显示"主"窗体。但是,当我使用顶部的"X"关闭按钮关闭主窗体时,主窗体关闭,但该过程仍在后台运行。当我不点击"关于"按钮时,一切都很好。它扼杀了这个过程。

C# - 打开另一个窗体后关闭应用程序时,应用程序继续在后台运行

在你的Form2中,你需要调出现有的Form1 instance而不是创建一个新的(这就是为什么关闭这个新创建的Form1不会退出应用程序,因为你的旧Form1实例仍然隐藏......因此,您可以在创建aboutdialog时传递引用,并在关闭aboutdialog时显示:

表格1:

private void AboutButton_Click(object sender, EventArgs e)
        {
            var aboutdialog = new Form2(this);
            aboutdialog.Show();
            this.Hide();
        }

表格2:

Form1 _parentform;
public Form2(Form1 parent)
        {
            _parentform=parent;
            InitializeComponent();
        }

private void CloseButton_Click(object sender, EventArgs e)
        {
            _parentform.Show();
            this.Close();
        }

在"AboutButton_Click"方法中,隐藏了 Form1。但是,在关闭"关于"对话框时,不会显示 Form1,而是创建一个新 Form1。原始 Form1 保持隐藏状态,并阻止应用程序关闭。

最好使用showdialog。

private void AboutButton_Click(object sender, EventArgs e)
{
    var aboutdialog = new Form2();
    aboutdialog.ShowDialog();
}

当 form2 关闭时,将打开 form1 的新实例,而不是原始实例。您可以在 Form2 中包含对 Form1 的引用,或者使用窗体的默认Owner,方法是显示以 Form1 作为其所有者的对话框:

aboutdialog.Show(this);

在关于...点击

和关闭

  private void CloseButton_Click(object sender, EventArgs e)
        {
            Owner.Show(); 
            this.Close();
        }