我怎样才能让这个功能继续下去

How can i make the function keep going

我正在构建一个程序并有一个执行按钮。如果这是您第一次使用需要登录的程序,我想这样做。如果没有,则您不需要,因为登录凭据已保存。这是我的代码..现在它不继续执行函数的其余部分..

loginSaver 是一个获取和设置方法,它在 loginform 中将 logincontinue 设置为 true。

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

登录表单:

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.If 如果您想阻止当前功能并等待 LoginForm 关闭,请使用 ShowDialog() 而不是 Show()。这样,在关闭登录表单后,您可以访问 Login/Password:

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

2.I 建议使用 string.IsNullOrEmpty() 检查是否提供了 login/password。

3.Instead of if (CheckBoxSave.Checked == true) 你可以写 if (CheckBoxSave.Checked)

4.If 您的条件计算结果为 True/False 例如if (CheckBoxSave.Checked == true) 在其他情况下不要使用另一个 ifelse 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 并且 userName/password 将始终设置。