繁体   English   中英

如何限制窗体在Winforms中加载C#

[英]how to restrict form to load in winforms c#

我有两种形式,即frmLoginfrmDash 我的用户名和密码保存在credentials.txt文件中。 我的默认运行形式是frmLogin 现在我的问题是,当应用程序启动时,它会从credentials.txt frmDash检查用户名和密码,并直接显示frmDash 它可以正常工作,但问题是,使用frmDashfrmLogin也在后面打开。 如何解决呢?

我已经试过了(Form1是frmLogin):

private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                var credentialLines = File.ReadAllLines(Environment.CurrentDirectory + "\\credentials\\credentials.txt");
                if (credentialLines.Any())
                {
                    UserName_reLogin = credentialLines[0];
                    Password_reLogin = credentialLines[1];
                    if (LoginUser(Log_API, UserName_reLogin, Password_reLogin))
                    {
                        logIn_Status = "true";
                        GlolbalUtil.LogIn_Status = logIn_Status;

                        //this.Hide();

                        frmDash frmDash = new frmDash();
                        frmDash.Owner = this;
                        frmDash.Show();
                        txtUsername.Text = "";
                        txtPassword.Text = "";
                        //GlolbalUtil.accept_status = "1";
                        this.Enabled = false;
                    }
                    else
                    {
                        MessageBox.Show("Please Check Username and password");

                    }

                }
                else
                {
                    this.Enabled = true;
                }
            }
            catch
            {
            }
        }

将您的登录逻辑移至Main函数中的Program.cs中,如下所示

var credentialLines = File.ReadAllLines(Environment.CurrentDirectory + "\\credentials\\credentials.txt");
if (credentialLines.Any()){
      UserName_reLogin = credentialLines[0];
      Password_reLogin = credentialLines[1];
if (LoginUser(Log_API, UserName_reLogin, Password_reLogin)){
    Application.Run(new frmDash ());
}else{
Application.Run(new frmlogin());
}
}else
{
Application.Run(new frmlogin());
}

首先,您应该在打开登录表单之前检查凭据是否存在。

但是无论如何要隐藏表单都使用this.Hide(); 隐藏表格

 private void FrmLogin_Shown(object sender, EventArgs e)
        {
            if (GlolbalUtil.authenticate == "true")
            {
                this.Hide();
            }
            else if(GlolbalUtil.authenticate == "false")
            {
                this.Show();
            }
        }

GlobalUtil.authenticate是用于检查用户是否登录的全局变量。 如果用户登录即表示GlobalUtil.authenticate=="true" ,则只有frmLoginhide否则show 工作完美。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM