C# 验证文本框并跳过表单关闭时的验证
下面是我用来验证文本框的代码片段 C代码C# 验证文本框并跳过表单关闭时的验证,c#,regex,validation,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 == " " || StrEmai
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();
}
}
如果正则表达式中的参数匹配,我将使用AutoValidate功能取消验证。但问题是,当我使用AutoValidate或将CauseValidation设置为false时,文本框的验证将在首次加载表单时完成。但是,当我删除texbox中的文本并重新输入时,第二次验证不起作用,也不会抛出无效电子邮件消息
在密码验证的情况下。即使按照Regex中的参数输入密码,它也会抛出无效的密码消息。我在这里看到了基于验证的问题,但没有一个问题对我的问题有满意的解决方案
有人能帮我纠正这个错误吗?我希望在没有ErrorProvider的情况下实现验证,这是另一个选项。尝试验证事件,而不是Validated@Sybren我使用验证来验证电子邮件,但它不起作用。