【问题标题】:Using ErrorProvider and disabling buttons at the same time同时使用 ErrorProvider 和禁用按钮
【发布时间】:2012-06-13 22:40:12
【问题描述】:

我喜欢 ErrorProvider 中的红色感叹号,我想用它来向用户展示问题所在。如果表单中的数据无效,我还要求必须禁用我的更新按钮。我在所有文本框的 TextChanged 事件上禁用/启用更新按钮。验证所有文本框的事件时应使用 ErrorProvider。

现在的问题:当在最后一个文本框中输入错误的数据时,更新按钮仍然会被禁用,但 ErrorProvider 不会显示,因为用户没有离开控件。在这种情况下我能做什么?如何减少用户的困惑,用户肯定会问“为什么禁用了更新,但窗口上的任何地方都没有感叹号”?

【问题讨论】:

  • 只是猜测:验证 TextChanged 事件的最后一个文本框。
  • 这将在用户尚未完成输入数据时向用户显示错误。这是次优的解决方案。

标签: c# validation


【解决方案1】:

您可以在 TextChanged 事件中验证最后一个(或所有)文本框。为了等待用户输入值得验证的内容,您可以:

  1. 等待给定的最少输入字符数 在 TextChanged 上启用验证,或
  2. 在 TextChanged 上启动一个计时器 - 并在每个 TextChanged 事件上重新启动它 - 间隔为 3 秒,当此计时器触发时 - 文本框不为空 - 您可以进行验证。

【讨论】:

  • 最后我两个都做了。分离的即时和延迟检查,前者在 TextChanged 上执行,后者在 TextChanged 中设置的计时器上执行,也在验证中执行。最少字符数是延迟检查之一。该按钮在 TextChanged 上启用,但同时进行了两种检查。
猜你喜欢
  • 2013-08-29
  • 2017-01-03
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多