子窗体关闭时显示的C#mainform

时间:2011-07-11 14:38:32

标签: c# winforms

我想要关闭我的第二张表格并显示我的第一张表格,而不是创建一个新对象。

frmMain Mainfrm = new Mainfrm();
Mainfrm.Show();
this.Close();

在我的主窗体上,对程序的某些用户进行了特殊编码,通过创建一个新对象可以抛弃主要在应用程序启动时首次创建mainfrm时创建的内容。

6 个答案:

答案 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();
    }