-1

我想知道。Microsoft Word、Excel 等应用程序如何创建一个包含空白的新表单,就像我们创建另一个新表单一样。

我试过代码:

this.Hide();

Form2 secondaryForm = new Form2(); 
secondaryForm.ShowDialog();

this.Close();

上面的代码是创建一个新的空白表格(new form),但那只是时间有限。我想知道的是,应用程序如何在如此无限的时间内制作一千个新的空白表格(新表格)?

注意:我所说的无限时间的意思是:我们可以创建一个新表单,表单将始终被创建,无论我们点击多少次“新建”按钮

提前致谢!

4

4 回答 4

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,但也冻结了打开它的表单。所以你可能不想要它

于 2013-08-20T10:38:22.463 回答
0

我想一旦我们单击按钮,您就想要表单,无论表单数量的限制如何,produce都应该生成并显示表单。您可以为此目的使用 a: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.

您应该限制表单的数量,因为我们无法生成尽可能多的表单,我已经测试过并且打开了StackOverflowException272System.dll个表单:)))。尝试添加一个count变量并在计时器达到一个数字时停止计时器,例如 272)

于 2013-08-20T10:30:24.630 回答
0

很简单,他们只需创建所需表单类的新实例并调用其Show方法

MyForm frm = new MyForm();
frm.Show();

您当前正在使用该ShowDialog方法,该方法创建一个模态对话框,即阻止用户与应用程序其余部分的交互,直到用户关闭它。那不是你想要的。

除非您确实想要关闭原始表单,否则您也不需要调用Hideand方法。CloseOffice 应用程序不这样做——“新建”只是打开一个新窗口,保持当前窗口不变。

如果您确实想在打开新表单时关闭原始表单,请执行以下操作:

// Create and display new form
MyForm frm = new MyForm();
frm.Show();

// Close this form
this.Close();
于 2013-08-20T10:20:22.540 回答
0

以下代码将允许您在不关闭主窗体的情况下打开任意数量的窗体。

//this.Hide();

Form2 secondaryForm = new Form2(); 
secondaryForm.Show();

//this.Close();
于 2013-08-20T10:19:09.510 回答