我尝试了代码:
this.Hide();
Form2 secondaryForm = new Form2();
secondaryForm.ShowDialog();
this.Close();
上面的代码是创建一个新的空白表单(新表单),但这只是有限的时间。我想知道的是,应用程序如何在如此无限的时间内制作出一千个新的空白表格(新表格)?
注意:我的意思是无限时间:我们可以创建一个新表单,无论我们多少次单击“新建”按钮
提前致谢!
答案 0 :(得分:2)
我上面的答案很好,但我想扩展它们。
您的代码无效的原因是因为您要关闭主表单
主窗体是程序启动时运行的窗体。如果您创建一个简单的winform并查看main
函数,您会看到类似
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
当您关闭Form1时,您将返回此处并继续运行,完成主要功能并结束程序。
除了其他人建议之外,你可以做的是创建一个不可见的主表单,并在创建主表单后立即创建另一个表单。通过这种方式,您可以根据需要关闭和打开表单,但不会关闭该程序。
至于你问过什么,能够打开几种形式。你可以做的只是做:
Form frm = new Form();// Creating a form
frm.Show();// displaying the form
ShowDialog
方法执行show
所做的操作,但也会冻结打开它的表单。所以你可能不想要它
答案 1 :(得分:0)
以下代码将允许您在不关闭主表单的情况下打开任意数量的表单。
//this.Hide();
Form2 secondaryForm = new Form2();
secondaryForm.Show();
//this.Close();
答案 2 :(得分:0)
很简单,他们只是创建所需表单类的新实例并调用其Show
method:
MyForm frm = new MyForm();
frm.Show();
您当前正在使用ShowDialog
方法,该方法会创建模态对话框,即。阻止用户与应用程序其余部分交互的用户,直到用户解除它为止。那不是你想要的。
除非您确实要关闭原始表单,否则您也无需调用Hide
和Close
方法。 Office应用程序不执行此操作 - “新建”只会打开一个新窗口,保留当前的窗口。
如果做想要在打开新表单时关闭原始表单,请按以下步骤操作:
// Create and display new form
MyForm frm = new MyForm();
frm.Show();
// Close this form
this.Close();
答案 3 :(得分:0)
我想您在点击按钮后需要produce
表单,表单应该生成并显示,不管表单数量的限制。您可以使用Timer
来实现此目的:
//Place this code in your main form constructor
Timer t = new Timer {Interval = 100};
t.Tick += (s,e) => {
new Form2().ShowDialog();
};
button1.Click += (s,e) => {
t.Start();
};
//NOTE: you have to use the stop button of the IDE to stop this,
//it will run continuously producing new forms and showing them
//without allowing you to touch the Close button of your main form.
你应该限制表单的数量,因为我们不能生成尽可能多的表单,我已经测试过StackOverflowException
抛出了System.dll
,打开了272个表单:))) 。尝试添加count
变量并在达到数字时停止计时器,例如272)