关于在C#中运行时关闭表单

时间:2011-05-03 06:39:50

标签: c# winforms formclosing

我有两个名为frmRegistration&我在 c#项目中的frmMain

我已将frmRegistration设为我的开始表单 用户以frmRegistration形式输入数据&按提交按钮进行注册。然后,我要关闭frmRegistration形式&向用户显示frmMain表单 我正在尝试使用Dispose()的{​​{1}}方法。但是,当我使用此方法时,它会处理我的所有应用程序执行,因为frmRegistration是启动形式。

我不希望这种情况发生。任何人都可以解决这个问题吗?

感谢。

4 个答案:

答案 0 :(得分:3)

使用Show()Hide()方法。

    private void btnSubmit_Click(object sender, EventArgs e)
    {
      ...
      var frm = new frmMain();
      frm.Location = this.Location;
      frm.StartPosition = FormStartPosition.Manual;
      frm.Show();
      this.Hide();
    }  

<强>更新
如果您不想在内存中使用frmRegistration,请以主窗体启动程序并将其添加到MainForm的Shown事件中:

    var frm = new frmRegistration();
    frm.Location = this.Location;
    frm.StartPosition = FormStartPosition.Manual;
    frm.FormClosing += delegate { this.Show(); };
    frm.Show();
    this.Hide();  

现在您可以关闭注册表单并自动返回主表单。

答案 1 :(得分:2)

尝试将frmMain设置为启动表单并最初隐藏它,显示frm注册,执行您必须执行的操作,然后处理它。

答案 2 :(得分:0)

您还可以使用Program.cs功能更改Main()主要课程以开始frmRegistration,然后在肯定DialogResult或其他检查后更改frmMain } - 作为主要形式和消息循环。

答案 3 :(得分:0)

至少有两种选择: 1.将您的启动表单转换为单例   当你需要隐藏它时,称之为隐藏方法

2.拥有新的不同启动表单,将其称为MainApp表单或其他任何形式,将其设置为不可见,您可以使用其他非启动表单执行任何操作。