C# - 打开另一个窗体后关闭应用程序时,应用程序继续在后台运行
本文关键字:应用程序 继续 运行 后台 另一个 窗体 | 更新日期: 2023-09-27 18:01:12
当我单击"关于"时,将打开一个新表单,并且主表单隐藏。我在"关于"按钮上有一个关闭按钮,该按钮关闭"关于"窗体,并显示"主"窗体。但是,当我使用顶部的"X"关闭按钮关闭主窗体时,主窗体关闭,但该过程仍在后台运行。当我不点击"关于"按钮时,一切都很好。它扼杀了这个过程。
在你的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();
}