c#主表单显示子表单何时关闭
本文关键字:表单 何时关 显示 | 更新日期: 2023-09-27 18:01:58
我想关闭第二个表单并显示第一个表单,而不创建新对象。
frmMain Mainfrm = new Mainfrm();
Mainfrm.Show();
this.Close();
在我的主窗体上有针对程序某些用户的特殊编码,通过创建一个新对象,它抛弃了在应用程序启动时首次创建主机时主要创建的所有内容。
不要关闭主表单,而是隐藏它。执行this.Hide();
,使其对用户不可见,并且您的主要表单数据将保留。您可以调用this.Show()
来再次显示它,而无需创建新实例。
您考虑过将第二个表单显示为对话框吗?
从主形式:
new Form2().ShowDialog();
这会导致主表单保持打开状态,但是用户无法访问它,直到它关闭第二个表单。
在主表单
private void button1_Click(object sender, EventArgs e) // to open form2
{
Form2 frm2 = new Form2(this);
frm2.Show();
this.Hide();
}
in 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();
}
您应该能够以相同的方式实例化另一个Windows窗体。让它成为模态或非模态,你应该没问题。您不会丢失其他表单中的信息。
对话框>
您希望主窗体在第二个窗体打开时隐藏吗?或者只是确保它还在那里。
在正常的事件过程中,在另一个表单中创建的表单会创建一种父子关系,所以当第二个表单关闭时,您应该会自动看到第一个表单。要在第一种表单中反映数据,就需要返回数据,这可以通过设置事件处理程序来完成。
如果您使用的是Visual Studio,它可能把Application.Run (new Form1())
在您的static void Main()
。这会导致应用程序在Form1关闭时退出(所以这就是Form2不存在的原因)
您可以使用Application.Run()
(不带参数),并在想要结束程序时显式调用Application.Exit
。