Как я могу заставить функцию продолжать работать - PullRequest
0 голосов
/ 02 января 2019

Я строю программу и у меня есть кнопка «Выполнить».Я хочу сделать это, если вы используете программу впервые, вам необходимо войти в систему.если нет, то вам это не нужно, потому что учетные данные уже сохранены.Вот мой код. Прямо сейчас он не работает с остальной частью функции execute ..

loginSaver - это метод get и set, который устанавливает logincontinue в true в loginform.

IB-форма:

internal void ExecBtn_Click(object sender, EventArgs e)
    {
        if (Username != "" || Password != "")
        {
            Username = Properties.Settings.Default.UserName.ToString();
            Password = Properties.Settings.Default.UserPass.ToString();
        }
        else if (loginForm.LoginSaver == true)
        {
            Username = loginForm.LoginUserName;
            Password = loginForm.LoginPassword;
        }
        else if (Username == "" || Password == "")
        {
            loginForm.Show();
            return;
        }



        if (ServerComboBox.SelectedIndex == -1)
        {
                ServerComboBox.BackColor = Color.LightYellow;
                MessageBox.Show("Du måste välja en kund!");

                return;
        }

LoginForm:

private void LoginBtn_Click(object sender, EventArgs e)
        {
            IB_Ärende IBForm = new IB_Ärende();
            if (UserNameTxt.Text == "" || PasswordTxt.Text == "")
            {
                UserNameTxt.BackColor = Color.LightYellow;
                PasswordTxt.BackColor = Color.LightYellow;
                UserNameTxt.ForeColor = Color.Red;
                PasswordTxt.ForeColor = Color.Red;
                MessageBox.Show("Du måste ange ett användarnamn och Lösenord!");
            }

            if (CheckBoxSave.Checked == true)
            {
                    IsServerConnected();
                    if (testingConnection == true)
                    {
                        Properties.Settings.Default.UserName = UserNameTxt.Text;
                        Properties.Settings.Default.UserPass = PasswordTxt.Text;
                        Properties.Settings.Default.Save();
                        //loginContinue = true;
                        this.Hide();
                        UserNameTxt.Text = "";
                        PasswordTxt.Text = "";

                        //IBForm.ExecBtn_Click(sender, e);
                    }
                    else if (testingConnection == false)
                    {
                        MessageBox.Show("Fel användarnamn eller lösenord");
                        UserNameTxt.BackColor = Color.LightYellow;
                        PasswordTxt.BackColor = Color.LightYellow;
                        UserNameTxt.ForeColor = Color.Red;
                        PasswordTxt.ForeColor = Color.Red;
                        return;
                    }

            }
            else if (CheckBoxSave.Checked == false)
            {
                IsServerConnected();
                if (testingConnection == true)
                {
                    userName = UserNameTxt.Text;
                    passWord = PasswordTxt.Text;

                    loginchecker = true;
                    loginContinue = true;
                    this.Hide();
                    //IBForm.ExecBtn_Click(sender, e);
                    UserNameTxt.Text = "";
                    PasswordTxt.Text = "";
                }
                else if (testingConnection == false)
                {
                    MessageBox.Show("Fel användarnamn eller lösenord");
                    UserNameTxt.BackColor = Color.LightYellow;
                    PasswordTxt.BackColor = Color.LightYellow;
                    UserNameTxt.ForeColor = Color.Red;
                    PasswordTxt.ForeColor = Color.Red;
                    return;

                }

            }

            else
            {
                MessageBox.Show("Du måste logga in för att kunna fortsätta!");
            }

        }

Спасибо за помощь ...

1 Ответ

0 голосов
/ 02 января 2019

1.Если вы хотите заблокировать текущую функцию и дождаться закрытия LoginForm, используйте ShowDialog () вместо Show (). Таким образом, после закрытия формы входа у вас есть доступ к логину / паролю:

loginForm.ShowDialog();
Username = loginForm.LoginUserName;
Password = loginForm.LoginPassword;
if(string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)) 
{
    return;
}

2. Я предлагаю использовать string.IsNullOrEmpty() для проверки, введены ли логин / пароль.

3. Вместо if (CheckBoxSave.Checked == true) можно написать if (CheckBoxSave.Checked)

4.Если у вас есть состояние, которое оценивается как True / False, например if (CheckBoxSave.Checked == true) в противном случае не используйте другой if как else if (CheckBoxSave.Checked == false) Если что-то не так, тогда это должно быть ложное использование

if (CheckBoxSave.Checked) 
{ 
... 
} 
else 
{
...
// checkbox is not checked 
}

аналогично для if (testingConnection == true)

Вы также можете немного изменить свой метод LoginBtn_Click(object sender, EventArgs e):

private void LoginBtn_Click(object sender, EventArgs e)
{
    userName = UserNameTxt.Text;
    passWord = PasswordTxt.Text;

    if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(passWord))
    {
        UserNameTxt.BackColor = Color.LightYellow;
        PasswordTxt.BackColor = Color.LightYellow;
        UserNameTxt.ForeColor = Color.Red;
        PasswordTxt.ForeColor = Color.Red;
        MessageBox.Show("Du måste ange ett användarnamn och Lösenord!");
        return;
    }
    IsServerConnected();
    if (testingConnection)
    {
        if(CheckBoxSave.Checked)
        {
            Properties.Settings.Default.UserName = UserNameTxt.Text;
            Properties.Settings.Default.UserPass = PasswordTxt.Text;
            Properties.Settings.Default.Save();
        }
        DialogResult = DialogResult.OK;
    } 
    else 
    {
        UserNameTxt.BackColor = Color.LightYellow;
        PasswordTxt.BackColor = Color.LightYellow;
        UserNameTxt.ForeColor = Color.Red;
        PasswordTxt.ForeColor = Color.Red;
        MessageBox.Show("Fel användarnamn eller lösenord");
    }
}

Таким образом, loginForm.ShowDialog () будет DailogResult.OK, только если вход выполнен успешно и имя пользователя / пароль всегда будут установлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...