如何在不关闭完整申请的情况下关闭第一张表格?

可能重复:
如何在不关闭应用程序的情况下关闭登录表单并显示主表单?

如何关闭第一个表格而不关闭完整的申请表?
C#。 例如,如果我的第一个表单是在输入用户名和密码后记录表单,如果它们是正确的,表单应该是关闭的,其他表单需要打开。

我试过this.close()但我的完整应用程序正在退出:(。之后我尝试了this.Hide()它可以工作,但我的表单仍然只是从UI隐藏运行。

TY

它实际上非常简单。 在Program.cs上,主静态方法使用以下代码启动LoginForm。

 var myLoginForm = new LoginForm(); myLoginForm.Show(); Application.Run(); 

然后从您的LoginForm中,只需记住在关闭之前启动您的下一个表单,如下所示:

 var myNextForm = new NextForm(); myNextForm .Show(); this.Close(); 

如果您只是想在登录失败后关闭应用程序,请执行以下操作:

 this.close(); Application.Exit(); 

希望能帮助到你!

在Program.cs中,您应该创建一个您希望长时间运行的表单实例,而不仅仅是登录表单。

然后,您可以让另一个表单显示登录表单以从用户那里获取该信息,如果存在,您将返回到其他表单。

那是因为您关闭的窗口是主应用程序的窗口。 关闭该窗口将关闭整个应用程序。

现在这里是修复:

  1. 例如,创建第二个Form LoginForm
  2. 在主窗体加载事件处理程序(如果没有,添加一个),显示LoginForm以要求用户输入他/她的凭据。

检查完这些凭据后,如果凭据良好,您可以从事件处理程序返回,在这种情况下,主窗口将显示,应用程序将正常运行或关闭主窗口,整个应用程序将关闭。

使用表单时,您必须意识到调用Application.Run()只是将应用程序主线程切换到表单UI线程。 当表单调用Close()时,它将完成它需要执行的任何处理,并从Application.Run()调用继续。 如果设置了登录表单的某些属性( frmLogin.LoginSuccessful或其他一些属性Application.Run() ,则在此之后可以执行的操作是在下一个表单上运行另一个Application.Run() )。

但是,这不是最佳实践(IMO)。 您应该做的是在主表单中打开登录表单,然后在登录表单关闭后主表单将继续运行。