以下是我用来验证文本框的代码段。
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的情况下实现验证,这是另一种选择。