关闭一个开始新表格。 C#

时间:2009-11-02 05:51:06

标签: c# forms

当我的程序运行时,它会在几秒后关闭form1。根据form1生命周期中发生的事情,我可能想打开form2。通常我会创建一个form2的新实例并使用show()方法。但是form2然后是form1的子项,然后也关闭。有没有人知道如何让它发挥作用?感谢。

4 个答案:

答案 0 :(得分:3)

对于多表单应用程序,我倾向于有一个表单是“主”表单,它打开子表单。

主要表单是使用Application.Run(...)

开始的表单

在您的情况下,您可能希望有一个可以作为控制器的空白表单,并让Application.Run调用它。

然后,该表单可以开始实例化您的Form1并运行它。 e.g。


public ControlForm : public Form
{
  Form1 form1;
  Form2 form2;

  public ControlForm()
  { 
    form1 = new Form1();
    form2 = new Form2();
  } 

  public void Start() // or something similar
  {
    form1.ShowDialog(); // will block showing the form, or you can do other tricks
                        // to show the form here
    if(form1.someFlag) form2.ShowDialog();
  }
} 

这只是“psudo-C#”代码,但希望这个概念有意义 然后你的主要功能可以运行“ControlForm”

它只是您可能想要尝试的概念

答案 1 :(得分:2)

您可以在应用程序的引导程序(主方法)中打开一个新表单。您将要调用Application.Run(yourFormHere)。按照要显示表单的顺序,您将连续使用其中的两个。您可以将第一个表单的结果存储在某个静态位置,并在显示第二个表单之前检查它。

答案 2 :(得分:1)

我最终这样做了:

 Auth f = new Form1();
 Application.Run(f);
 if (f.authed)
 {
    Application.Run(new Form2());
 }

答案 3 :(得分:0)

我不认为您的问题是Form2实例是Form1实例的子表单,而是Form1实例是您的应用程序主表单。这将使您的应用程序在Form1关闭时退出。防止这种情况的一种方法是将主方法改为不将Form1设置为主要形式(see here for details on that)。