Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确打开登录表单_C#_Forms_Winforms_Mdi_Program Files - Fatal编程技术网

C# 如何正确打开登录表单

C# 如何正确打开登录表单,c#,forms,winforms,mdi,program-files,C#,Forms,Winforms,Mdi,Program Files,我的c#windows应用程序中有一个登录表单和MDI主表单。在MDI表单加载事件中,我像这样打开我的登录表单。当登录成功时,只有它退出并启用MDI主窗体。最近我才发现,如果我关闭我的登录表单,它就会关闭,然后它会无障碍地启用我的MDI main 这是我在MDI主窗体中加载登录名的方式 private void MDiMain_Load(object sender, EventArgs e) { setDisplaysize();

我的c#windows应用程序中有一个登录表单和MDI主表单。在MDI表单加载事件中,我像这样打开我的登录表单。当登录成功时,只有它退出并启用MDI主窗体。最近我才发现,如果我关闭我的登录表单,它就会关闭,然后它会无障碍地启用我的MDI main

这是我在MDI主窗体中加载登录名的方式

private void MDiMain_Load(object sender, EventArgs e)
        {
                setDisplaysize();

                Form newLogin = new FormControllers.FrmLogin();
                newLogin.StartPosition = FormStartPosition.CenterScreen;
                //newLogin.Show(this);
                newLogin.ShowDialog(this);
                newLogin.Focus();
                newLogin.TopMost = true;
                newLogin.Activate();                        

      } 
然后,我尝试使用这个代码段像这样更改我的应用程序

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            FormControllers.FrmLogin fLogin = new FormControllers.FrmLogin();
            if (fLogin.ShowDialog() == DialogResult.OK)
            {

                Application.Run(new MDiMain());
            }
            else
            {
                Application.Exit();
            }
        }
现在表单登录打开,但成功登录后,MDI主表单不会启动。我做错了什么

此外,这是我在登录表单中登录按钮的代码

private void btnLogin_Click(object sender, EventArgs e)
        {
            string txtPass = "";
            string txttPassword = "";
            string txtHoldStr = "";
            String txtStringst1 = "";
            char chrFstep ='c';
            char chrSstep ='c';
            int testInt = 0;

            using (DataControllers.RIT_Allocation_Entities EntityModel = new DataControllers.RIT_Allocation_Entities())
            {
                try
                {
                    userHeadModel = EntityModel.TBLU_USERHED.Where(x => x.USERHED_USERCODE == (txtUserName.Text.Trim())).FirstOrDefault();
                    txtPass = userHeadModel.USERHED_PASSWORD;
                    txttPassword = txtPassword.Text.Trim();

                    if (txtPass == txtHoldStr)
                    {
                        MessageBox.Show("Login Successful");
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("Invalid username or password please try again");
                        txtPassword.Focus();
                    }
                }
                catch (Exception ex) { }

            }
        }

在原始代码中,检查对话框结果

private void MDiMain_Load(object sender, EventArgs e)
{
    setDisplaysize();

    Form newLogin = new FormControllers.FrmLogin();
    newLogin.StartPosition = FormStartPosition.CenterScreen;

    if (newLogin.ShowDialog(this) != DialogResult.OK)
    {
        Close();
        // or better:
        // BeginInvoke((Action)Close);
        return;
    }

    // possibly further main form initialization logic here
  } 

您需要设置对话框结果:

if (txtPass == txttPassword)
{
    MessageBox.Show("Login Successful");
    DialogResult = DialogResult.OK;
    Close();
}
只有默认按钮会自动为您执行此操作。当涉及到逻辑时,您需要根据身份验证的结果(在本例中)进行设置


除此之外,我猜原始代码中与txtHoldStr的比较是错误的。此变量始终为空。要检查文本框中的密码是否与数据模型中的密码匹配,请将TXTPASSWORD与TXTPASSWORD进行比较。

成功登录后,您可能没有设置登录表单的对话框结果。@dlatikay我是这方面的新手。是的,我没有在登录表单中设置任何对话框结果。如果没有,如何修改此代码以实现成功登录并打开MDI表单?在您的登录表单中,您将决定登录是否成功。之后,您可能会调用
Close()
。在关闭前添加
DialogResult=DialogResult.OK
。如有疑问,请显示关闭登录窗体的代码。@dlatikay我添加了按钮登录的代码。