C# 每次单击按钮时创建一个新表单
我在想。Microsoft Word、Excel等应用程序如何创建一个内部为空的新表单,就像我们创建另一个新表单一样 我试过密码:C# 每次单击按钮时创建一个新表单,c#,winforms,C#,Winforms,我在想。Microsoft Word、Excel等应用程序如何创建一个内部为空的新表单,就像我们创建另一个新表单一样 我试过密码: this.Hide(); Form2 secondaryForm = new Form2(); secondaryForm.ShowDialog(); this.Close(); 上面的代码是创建一个新的空白表单(newform),但这只是有限的时间。我想知道的是,应用程序如何在如此无限的时间内生成一千个新的空白表单(新表单) 注意:我所说的无限制时间的意思
this.Hide();
Form2 secondaryForm = new Form2();
secondaryForm.ShowDialog();
this.Close();
上面的代码是创建一个新的空白表单(newform),但这只是有限的时间。我想知道的是,应用程序如何在如此无限的时间内生成一千个新的空白表单(新表单)
注意:我所说的无限制时间的意思是:我们可以创建一个新表单,无论单击“新建”按钮多少次,表单都将始终被创建
提前谢谢 以下代码允许您在不关闭主窗体的情况下打开任意数量的窗体
//this.Hide();
Form2 secondaryForm = new Form2();
secondaryForm.Show();
//this.Close();
很简单,他们只需创建所需表单类的新实例并调用其: 您当前正在使用
ShowDialog
方法,该方法创建一个模式对话框,即阻止用户与应用程序其余部分的交互,直到用户将其取消。那不是你想要的
您也不需要调用Hide
和Close
方法,除非您确实想要关闭原始表单。Office应用程序不这样做-“新建”只会打开一个新窗口,保持当前窗口不变
如果在打开新表单时确实要关闭原始表单,请按以下方式操作:
// Create and display new form
MyForm frm = new MyForm();
frm.Show();
// Close this form
this.Close();
我想你想
生成表单一旦我们点击按钮,表单就应该生成并显示,而不管表单数量的限制如何。为此,您可以使用计时器
:
//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.
您应该限制表单的数量,因为我们无法生成尽可能多的表单,我已经测试过,在System.dll中抛出了StackOverflowException
,打开了272个表单:))。尝试添加一个count
变量,并在达到某个数字时停止计时器(例如272)我上面的答案很好,但我想扩展它们
代码不起作用的原因是您正在关闭主窗体
主窗体是程序启动时运行的窗体。如果您创建一个简单的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
的操作,但也冻结打开它的表单。所以你可能不想要它你所说的无限时间
是什么意思?我的意思是,当我单击“按钮”(即创建新表单)时,新表单将始终被创建,无论我们单击“按钮”多少次,都会调用Show,而不是ShowDialog,并且不要关闭父级form@Fuhans使用secondaryForm.Show()
而不是ShowDialog()
并且不要关闭主窗体。您可以尝试而(true)新建窗体2().Show()代码>,应该做你想做的事是的,我没有想到这个设置是默认设置。但是有一个比你提出的更好的解决方案,只是。@CodyGray天哪!非常感谢。太棒了。尽管从未有过这样的想法。哇!我只是想起了所有我可以使用它的时候……它是VB.NET应用程序属性页上的内置选项。我不知道为什么它在C#中隐藏得这么好。谢谢@NoIdeaForName
Form frm = new Form();// Creating a form
frm.Show();// displaying the form