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