我想要关闭我的第二张表格并显示我的第一张表格,而不是创建一个新对象。
frmMain Mainfrm = new Mainfrm();
Mainfrm.Show();
this.Close();
在我的主窗体上,对程序的某些用户进行了特殊编码,通过创建一个新对象可以抛弃主要在应用程序启动时首次创建mainfrm时创建的内容。
答案 0 :(得分:2)
请勿关闭主表单,而是隐藏它。执行this.Hide();
以便用户无法看到它,您的主表单数据将保留。您可以调用this.Show()
再次显示它,而无需创建新实例。
答案 1 :(得分:1)
您是否考虑将第二个表单显示为对话框?
从主要表格:
new Form2().ShowDialog();
这会导致主窗体保持打开状态,但是用户在关闭然后关闭第二个窗体之前无法访问它。
答案 2 :(得分:0)
您应该能够以相同的方式实例化另一个Windows窗体。使它模态或无模式,你应该没事。您不会丢失其他表格中的信息。
请参阅此处了解MSDN article on Dialog Boxe s。
答案 3 :(得分:0)
你希望主窗体在第二个打开时隐藏吗?或者只是确保它仍在那里。
在正常的事件过程中,以另一种形式创建的表单会创建一种父子关系,因此您应该在第二个表单关闭时自动查看第一个表单。将数据反映在第一种形式中需要获取数据,这可以通过设置事件处理程序来完成。
例外情况是你关闭主表单,可以通过隐藏它来避免它,然后在#2结束时取消隐藏它。
答案 4 :(得分:0)
如果您使用的是Visual Studio,则可能会将Application.Run (new Form1())
放入static void Main()
。这导致应用程序在Form1关闭时退出(这就是为什么Form2不会停留的原因。)
相反,您可以使用Application.Run()
(不带参数)并在要结束程序时明确调用Application.Exit
。
答案 5 :(得分:0)
以主要形式
private void button1_Click(object sender, EventArgs e) // to open form2
{
Form2 frm2 = new Form2(this);
frm2.Show();
this.Hide();
}
在form2中
private mainForm mainForm; //mainForm is the name of the Main form
public Form2(mainForm mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
}
private void button1_Click(object sender, EventArgs e)// to close form2 and show main
{
this.mainForm.Show();
this.Close();
}