CSharp - 单击按钮时when验证不验证

  显示原文与译文双语对照的内容

我正在创建一个 C# Windows 注册表单,这意味着用户必须输入他的用户名。密码和它的他细节。

因此,我使用了两个文本框和两个"errorproviders"的"正在验证"事件来验证文本框,确保用户名至少为 5个字符,密码至少包括 1个字符,密码,密码格式是正确的。 你知道。

下面是我的用户名文本框的验证代码之一:


private void usrTxtBox_Validating(object sender, CancelEventArgs e)
{
 if (string.IsNullOrEmpty(usrTxtBox.Text))
 {
 usrOk.Clear();
 usrError.SetError(usrTxtBox,"field required!");
 count++;
 }
 else if (!Regex.IsMatch(usrTxtBox.Text,"</REGEX PATTERN/>"))
 {
 usrOk.Clear();
 usrError.SetError(usrTxtBox,"</ERROR MESSAGE/>");
 count++;
 }
 else
 {
 usrError.Clear();
 usrOk.SetError(usrTxtBox,"good to go");
 count = 0;
 }
}

每一个文本框都有重复( 我有用户名,密码,名字,电子邮件和联系号码,每个都有一个不同的正规表达式 Pattern 。

所以,如你所见,"正在验证"事件仅验证文本框是否为"聚焦",然后是"失去焦点"。 因这里,当单击"register"时,只需正确输入第一个文本框所需的值,则计数将等于 0. register 按钮的代码单击下面:


private void rgstr_Click(object sender, EventArgs e)
{
 if (ValidateChildren())
 {
 if (count!= 0)
 {
 MessageBox.Show("check again");
 }
 else if (count == 0)
 {
 MessageBox.Show("gd to go");
 }
 }
}

我尝试使用ValidateChildren来强制验证,但它不起作用。 有什么解决方法? 或者是否存在用于验证文本框的替代解决方案?

时间: 作者:

尝试这里 Pattern 进行验证


private bool ValidateChildren()
 {
 bool IsValid = true;
//Clear error provider only once.
 usrError.Clear(); 

//use if condition for every condtion, dont use else-if
 if (string.IsNullOrEmpty(usrTxtBox.Text.Trim()))
 {
 usrError.SetError(usrTxtBox,"field required!"); 
 IsValid =false; 
 }

 if (!Regex.IsMatch(usrTxtBox.Text,"</REGEX PATTERN/>"))
 { 
 usrError.SetError(usrTxtBox,"</ERROR MESSAGE/>");
 IsValid =false; 
 }
 return IsValid ;
 }

然后单击按钮单击:


 private void rgstr_Click(object sender, EventArgs e)
 {
 if (ValidateChildren())
 {
//valid
 }
 else
 {
//Error will shown respective control with error provider
 }
 }

作者:
...