我想关闭我正在使用的当前表单(MainForm),然后打开第二个表单(表单)。
我试过了:
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
this.Close();
Form2 form2 = new Form2();
form2.ShowDialog();
}
或者在this.Close();
之后添加form2.ShowDialog()
也不起作用。
任何提示?
编辑:也可以在this.Close()
关闭新表单后关闭form2.ShowDialog()
之后添加form2.Show()
。
如果我选择{{1}},则会立即关闭两个表单。
答案 0 :(得分:34)
更改
this.Close();
要:
this.Hide();
因为您无法关闭主应用程序窗口并希望应用程序在其后运行。 您必须隐藏主窗体或将主窗口更改为仍然打开的窗口。
在这种情况下,您必须在ShowDialog()
结束后关闭主窗口。
然后,您必须在此按钮事件函数this.Close()
您的代码新代码是:
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
// hide main form
this.Hide();
// show other form
Form2 form2 = new Form2();
form2.ShowDialog();
// close application
this.Close();
}
答案 1 :(得分:6)
您可以使用ApplicationContext,但.NET框架已经非常好地支持使用WindowsFormsApplicationBase类的这种窗口模式。它的ShutdownStyle属性可用于仅在最后一个窗口关闭后关闭程序。使Program.cs中的代码如下所示:
using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices; // Add reference to Microsoft.VisualBasic!!
namespace WindowsFormsApplication1 {
class Program : WindowsFormsApplicationBase {
[STAThread]
static void Main(string[] args) {
var app = new Program();
app.EnableVisualStyles = true;
app.ShutdownStyle = ShutdownMode.AfterAllFormsClose;
app.MainForm = new Form1();
app.Run(args);
}
}
}
答案 2 :(得分:1)
这对我来说很好......
private void button_Name_Click(object sender, EventArgs e)
{
form_2 Form2 = new Form2();
Form2.ShowDialog();
this.Close();
}
答案 3 :(得分:0)
Form2 frm2 = new Form2();
frm2.ShowDialog();
和
this.Close();
不是一个很好的组合..
frm2实际上会加载,但你甚至看不到它,因为this.Close();
只会在一毫秒内关闭每个表单......
this.Hide();
工程...
答案 4 :(得分:0)
只需启用或禁用表单本身,而不是尝试关闭。
编码:
this.enabled = false;
在点击事件中或您想要的任何地方。
希望它有所帮助。
答案 5 :(得分:0)
只需替换this.Close();与this.Hide(); 它会完美运作!
答案 6 :(得分:-1)
您要先关闭表单,必须先加载第二个表单。
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
this.Close();
}
答案 7 :(得分:-1)
试试这个:
btCancel.FindForm().Close();
btcancel
是一个位于您要关闭的表单上的按钮。
答案 8 :(得分:-1)
this.Visible = false;
Form2 form2 = new Form2();
form2 .ShowDialog();
this.Close();
答案 9 :(得分:-1)
new play().Show();
this.Dispose();
答案 10 :(得分:-2)
将其置于主要表格
private void mainform_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
为我工作。