验证文本框并跳过窗体关闭时的验证

时间:2014-10-22 10:17:03

标签: c# regex validation

以下是我用来验证文本框的代码段。

C#代码

private void TxtEmail_Validating(object sender, CancelEventArgs e)
{

    string StrEmail = TxtEmail.Text.Trim();
    if (StrEmail == "" || StrEmail.IndexOf("") > 0 || StrEmail.IndexOf('"') > 0 || StrEmail == " " || StrEmail.IndexOf(" ") > 0)
    {
        MessageBox.Show("Email Cannot be Left Blank");
        TxtEmail.Select();

    }

    Regex r = new Regex(@"@.");

    if (r.IsMatch(TxtEmail.Text))
    {
        AutoValidate = AutoValidate.Disable;

    }
    else
    {
        MessageBox.Show("Invalid Email Format");
        TxtEmail.Clear();
        TxtEmail.Focus();
    }

 }

private void TxtPassword_Validated(object sender, EventArgs e)
{

    string StrPass=TxtPassword.Text;
    if (StrPass == "" || StrPass.IndexOf("") > 0 || StrPass.IndexOf('"') > 0 || StrPass == " " || StrPass.IndexOf(" ") > 0)
    {
        MessageBox.Show("Invalid Password");
        TxtPassword.Focus();
    }

    Regex r = new Regex(@"@#");
    if (r.IsMatch(TxtPassword.Text))
    {

        AutoValidate = AutoValidate.Disable;

    }
    else
    {
        MessageBox.Show("Invalid Password");
        TxtPassword.Clear();
        TxtPassword.Focus();

    }


}

如果Regex中的参数匹配,我使用AutoValidate功能取消验证。但问题是当我使用AutoValidate or Set CauseValidation to false时,TextBox的验证是在第一次加载表单时完成的。但是当我删除texbox中的文本并重新输入它时,验证第二次不起作用并且不会抛出消息"Invalid Email"

在密码验证的情况下。按照正则表达式中的参数输入密码后,它会抛出"Invalid Password"消息。我在此基于验证看到了问题,但没有一个问题能解决我的问题。< / p>

有人可以帮我纠正这个错误吗?我想在没有ErrorProvider的情况下实现验证,这是另一种选择。

0 个答案:

没有答案