按下按钮时检查多个条件

时间:2017-10-01 03:06:03

标签: c#

我现在正在写一份报名表。当我单击按钮时,我希望表单检查几个因素,以便继续并将数据保存到数据库。如果有错误,我有三个标签会显示错误。因此,当单击按钮时,我希望它检查并确保文本框不为空,然后如果它们为空,则将该文本发布到三个标签之一。然后,如果密码字段不匹配或为空,请将其添加到另一个标签。我还想检查以确保密码符合长度要求

我遇到的问题是,一旦if语句完成,它基本上就会停止。所以我添加了一个else if语句,但这并没有真正帮助。有什么我想念的吗?

private void btnCreate_Click(object sender, EventArgs e)
{
     checkBoxes();
     string err();

     if (emptyBoxes.Count != 0) 
     {
        err = string.Join(", ", emptyBoxes) + " cannot be empty";
        lblError.Text = err;
     }
     else if (!txtPassword.Text.Equals(txtPwdConf.Text))
     {
          lblError2.Text = "Passwords do not match!";
     }
     else if (!string.IsNullOrEmpty(txtPassword.Text))
     {
          String password = txtPassword.Text;

          Match pw = Regex.Match(password, @"((?=.*\d)(?=.*[A - Z])(?=.*\W).{ 8,50})", RegexOptions.IgnorePatternWhitespace);

            if (!pw.Success)
            {
                lblError3.Text = "Passowrd is not valid.";
            }

        }

2 个答案:

答案 0 :(得分:0)

仅使用if代替if else

 if (emptyBoxes.Count != 0) 
 {
    err = string.Join(", ", emptyBoxes) + " cannot be empty";
    lblError.Text = err;
 }
 if (!txtPassword.Text.Equals(txtPwdConf.Text))
 {
      lblError2.Text = "Passwords do not match!";
 }
 if (!string.IsNullOrEmpty(txtPassword.Text))
 {
      String password = txtPassword.Text;

      Match pw = Regex.Match(password, @"((?=.*\d)(?=.*[A - Z])(?=.*\W).{ 8,50})", RegexOptions.IgnorePatternWhitespace);

        if (!pw.Success)
        {
            lblError3.Text = "Passowrd is not valid.";
        }

    }

答案 1 :(得分:0)

您的代码基本上说:

  1. 如果空方框数不为零,请执行A
  2. 如果空盒数为零 txtPassword不等于txtPwdConf,请执行B
  3. 如果空盒数为零,并且txtPassword等于txtPwdConf txtPassword不为null或为空,请执行C
  4. 你看到了问题吗?

    你的if语句都是互斥的。意味着如果一个被触发,则其他都不能被触发。这是因为您使用else if语句而不是if

    如果您将代码更改为仅使用if语句,您会发现一个很大的区别:

    if (emptyBoxes.Count != 0) 
    {
        err = string.Join(", ", emptyBoxes) + " cannot be empty";
        lblError.Text = err;
    }
    if (!txtPassword.Text.Equals(txtPwdConf.Text))
    {
        lblError2.Text = "Passwords do not match!";
    }
    if (!string.IsNullOrEmpty(txtPassword.Text))
    {
        String password = txtPassword.Text;
        Match pw = Regex.Match(password, @"((?=.*\d)(?=.*[A - Z])(?=.*\W).{ 8,50})", RegexOptions.IgnorePatternWhitespace);
    
        if (!pw.Success)
        {
            lblError3.Text = "Passowrd is not valid.";
        }
    }
    

    这段代码就像是说:

    1. 如果空方框数不为零,请执行A
    2. 无论空盒数。如果txtPassword不等于txtPwdConf,请执行B
    3. 无论空盒数,还是txtPassword匹配txtPwdConf 。如果txtPassword不为null或为空