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

时间:2014-04-30 14:39:00

标签: c# forms

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

4 个答案:

答案 0 :(得分:1)

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

Form1中:

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();
        }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

最好使用showdialog。

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

答案 3 :(得分:0)

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

aboutdialog.Show(this);

在约...点击

并关闭

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