1

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

我已设置frmRegistration为我的开始表格
用户在frmRegistration表单中输入数据并按下提交按钮进行注册。然后,我想关闭表单并向用户frmRegistration显示表单。我正在尝试 使用. 但是,当我使用这种方法时,它会处理我所有的应用程序执行,因为它是启动表单。frmMain
Dispose()frmRegistrationfrmRegistration

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

谢谢。

4

4 回答 4

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();  

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

于 2011-05-03T06:42:07.417 回答
2

尝试将 frmMain 设置为启动表单并初始隐藏它,显示 frmRegistration,做你必须做的,然后处理它。

于 2011-05-03T06:47:06.997 回答
0

您还可以使用要启动的功能更改Program.cs主类,并且在肯定或其他检查之后它将开始- 作为您的主表单和消息循环。Main()frmRegistrationDialogResultfrmMain

于 2011-05-03T06:56:51.403 回答
0

至少有两种选择: 1.把你的 Start up form 变成一个单例 当你需要隐藏它时,调用它的 hide 方法

2.Have new different startup form, call it MainApp form or whatever, have it set to invisible, the you can do what ever you like with the other non-startup forms.

于 2011-05-03T07:02:01.443 回答