【问题标题】:ErrorProvider working on one call but not another?ErrorProvider 处理一个呼叫但不是另一个?
【发布时间】:2012-03-14 10:38:14
【问题描述】:

我在 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, "");
 }

【问题讨论】:

  • 同时使用 txtEndhour 和 lblEnd 一定是错误的。这段代码在哪里处理两个不同的控件?
  • @HansPassant - 如果您的意思是我不应该验证一个控件只是为了在另一个控件上显示验证器,那不是真的,我让它在多个地方工作。我这里有一个愚蠢的逻辑错误。

标签: c# .net winforms error-handling


【解决方案1】:

如果您使用 endHour >= 24 但 endMin 当您发现小时部分无效时,您应该将两个验证分开(更好)或返回。

【讨论】:

  • -是的,我很愚蠢。我不遗余力地发布了这个,然后回家,当我吃晚饭时,我去了“哦!这就是问题所在!”。谢谢,你完全正确。
  • 是的,这也发生在我身上。有时候休息会更好! :-)
猜你喜欢
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多