ErrorProvider处理一个呼叫而不是另一个呼叫?

时间:2012-02-23 23:12:57

标签: c# .net winforms error-handling

我在winforms项目中使用了ErrorProvider控件。它的工作大部分(虽然使用起来有点痛苦)。

现在我有2个控件可以激活相同的验证器。在验证器中,我查看每个控件,如果错误则设置错误。一个呼叫有效,但另一个呼叫无效。怎么会这样?没有例外。

代码:

  if (endHour > 12)
  {
     if (endHour >= 24)
     {
         //Fails without error
         errorProvider1.SetError(lblEnd, "You cannot enter more than 24 hours in a day");  
     }
     else
     {
         txtEndHour.ForeColor = Color.Blue;
     }
  }
  else
  {
      errorProvider1.SetError(lblEnd, "");
  }

 if (endMin >= 60)
 {
     //Always works.
     errorProvider1.SetError(lblEnd, "You can't enter more than 60 minutes in an hour.");  
 }
 else
 {
    errorProvider1.SetError(lblEnd, "");
 }

1 个答案:

答案 0 :(得分:1)

如果您使用endHour> = 24调用此代码,但endMin< 60你将永远落到最后的其他清除errorProvider的地方。
您应该将两个验证(更好)分开,或者在发现小时部分无效时进行回复。