C# 如何在c语言中实现登录表单和主表单而不增加实例#

C# 如何在c语言中实现登录表单和主表单而不增加实例#,c#,winforms,login,C#,Winforms,Login,Iam在登录按钮单击时为主窗体创建实例,在注销按钮单击时再次为登录窗体创建实例。我的代码是 if ((txtUsrNm.Text == "Admin") && (txtPswd.Text == "Admin")) { mainForm mainFm = new mainForm(); mainFm.userNam = txtUsrNm.Text; mainFm.pasWrd = t

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中 e、 g:

然后在登录表单中输入登录代码。用户登录后,表单登录将关闭,并将设置为。dialogresult=dialogresult.ok; e、 g:


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

然后在登录表单中输入登录代码。用户登录后,表单登录将关闭,并将设置为。dialogresult=dialogresult.ok; e、 g:


我已在mainform中创建了一个属性。现在,我正在尝试将txtUsername值发送到该属性。以您的方式,txtUsername值不会传输到mainform。如何将txtUsername值发送到主窗体有很多变量传递方式!最简单的方法之一是通过构造函数传递值。请搜索一下。这比我说的容易。您可能还想看看这个:我已经在mainform中创建了一个属性。现在,我正在尝试将txtUsername值发送到该属性。以您的方式,txtUsername值不会传输到mainform。如何将txtUsername值发送到主窗体有很多变量传递方式!最简单的方法之一是通过构造函数传递值。请搜索一下。这比我说的容易。您可能还想看看这个:
 if (new frmLogin().ShowDialog() == DialogResult.OK)
 {
     Application.Run(new frmMain());
 }
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;
    }