如何在c#中实现没有更多实例的登录表单和主表单

Iam在登录按钮上创建一个实例到主窗体,然后在注销按钮单击时再次创建登录表单实例。 我的代码是

if ((txtUsrNm.Text == "Admin") && (txtPswd.Text == "Admin")) { mainForm mainFm = new mainForm(); mainFm.userNam = txtUsrNm.Text; mainFm.pasWrd = txtPswd.Text; mainFm.Show(); this.Hide(); } else { MessageBox.Show("Invalid Username or Password."); } 

并再次在注销按钮

  this.Hide(); loginFrm lgn = new loginFrm(); lgn.Show(); 

如果我尝试关闭而不是隐藏,整个应用程序将关闭。 通过执行此Application.OpenForms计数在每次登录和注销操作时都会增加。 如何在Windows应用程序中实现登录和注销操作。 是否有任何其他想法来实现此操作。 感谢您

在Application.Run()调用之前,您需要将您的登录部分放在Program.cs中:

  if (new frmLogin().ShowDialog() == DialogResult.OK) { Application.Run(new frmMain()); } 

然后以登录forms输入登录代码。 用户登录后,表单登录将被关闭并将设置this.dialogresualt = dialogresult.ok; 例如:

 if (txtUserName.Text == "blah" && txtPassword.Text == "blah") { txtPassword.BackColor = Color.YellowGreen; txtUserName.BackColor = Color.YellowGreen; this.DialogResult = DialogResult.OK; } else { txtPassword.BackColor = Color.Salmon; txtUserName.BackColor = Color.Salmon; }