【发布时间】:2015-05-27 20:03:53
【问题描述】:
我有一个简单的 VB.Net Windows 窗体应用程序,它有两个文本框和一个按钮,它是表单的 AcceptButton。唯一的代码在 ButtonClick 上,并使用 Leave 事件对每个 TextBox 进行验证。 (我也尝试了 LostFocus 事件,它似乎工作相同)。我的问题是,如果我用鼠标单击 Button,则用户所在的 TextBox 会发生正确的 Leave(或 LostFocus)事件,但是如果我按 Enter,则焦点不会丢失,因此该 TextBox 的代码确实不跑。
如何使 Enter 键的行为与单击表单的 AcceptButton 相同?
【问题讨论】:
-
为什么不把验证码放在点击事件中呢?无论他们输入什么都是试探性的,直到他们按下 Enter/Submit/Ok/Done。
-
在我浏览表单时,每个表单字段不能进行自己的验证吗?有人告诉我最好立即验证,等到提交是糟糕的用户体验。此外,较少面向对象。 1992 年 Petzold 的书和 C.
-
逐字段验证,顾名思义,意味着您将在浏览表单时弹出 MsgBox 或其他任何东西,每个人都觉得这很麻烦。 FxF 也仅适用于简单的应用程序 - 在其他情况下,B 的验证取决于 A,这意味着如果在验证 B 后它们更改 A,则可能会出现死锁。至于 OO,如果表单的内容表示类似 a
Customer或Widget,将输入作为一个整体进行验证是完全 OO 的。 -
此外,旧 WDIG 的规则 #1 是 用户负责,这意味着他们可以按自己喜欢的任何顺序输入数据,通过制表符/跳过字段来获取到别的东西。一个例子是电话上的 CSR - 如果客户没有按照您的表单期望的顺序获得数据,那么事情不应该突然停止。或者他们可以输入一个年龄的“我喜欢馅饼”,但是他们不能提交它。
-
@Plutonix:我对每个字段都有验证,以及确保两个条目相互兼容的点击验证......思考。空字段 - 确定,直到提交。无效数据 - 不能离开该字段。我的方法将不同事物的责任级别委托给不同的方法,而且在 Windows、OO 和框架之前很长时间我就这样做了。 (我只是暂时停止做其他事情。)我希望我可以将完成的应用程序发布到某个地方......
标签: vb.net validation