Как правильно открыть форму входа - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть форма входа в систему и основная форма MDI в моем приложении c # windows.В этом я открываю мою форму входа, как это в событии загрузки формы MDI.И когда вход в систему успешен, он только выходит и включает основную форму MDI.Только недавно я узнал, что если я закрою форму входа в систему, она закроется, а затем включит основную MDI без каких-либо барьеров.

Так я загружаю свой логин в основную форму 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) { }

            }
        }

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вам необходимо установить результат диалога:

if (txtPass == txttPassword)
{
    MessageBox.Show("Login Successful");
    DialogResult = DialogResult.OK;
    Close();
}

Только кнопки по умолчанию делают это для вас автоматически.Когда задействована логика, вам нужно установить ее в зависимости от результата - в данном случае - аутентификации.

Кроме того, я полагаю, что сравнение с txtHoldStr в исходном коде неверно.Эта переменная всегда пуста.Чтобы проверить, совпадает ли пароль из текстового поля с паролем в модели данных, сравните txtPass с txttPassword.

0 голосов
/ 12 декабря 2018

В исходном коде проверьте результат диалога.

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
  } 
...