Har*_*ish 1 vb.net visual-studio-2010
我在表单中使用了很多文本框.我如何验证它们,在某些文本框中我只需要使用文本,而在某些文本框中我只需要使用数字.使用ASCII是一种正确的方法还是有更简单的方法来做到这一点.如果是这样,请告诉我编码.
最重要的是,不要惹恼用户.如果我正在键入一些文本并且应用程序阻止了(不管它是怎么做的),我理所当然地生气了.
有多个值可以处理:
对数值使用NumericUpDown或Slider控制而不是文本框(换句话说:使用正确的控件而不是通用控件).
允许(或多或少)任意输入并尝试以有意义的方式解析用户输入.例如,输入" +33 (0) 6 12-34-56"对于法国的电话号码来说是完全有意义的格式.应用程序应该允许,并尝试正确解析它.
当然,这是最难的方式,但它提供了最佳的用户体验.
使用该Validating事件验证输入.每当用户离开输入控件时,即当他们完成输入时,这将自动触发,并且验证不会使用户烦恼.
该事件的MSDN文档提供了如何正确使用此事件的示例.
但是不要使用KeyPress或TextChanged事件来进行验证.第一个会在输入文本时打扰用户.第二个会也惹恼了他们,当他们尝试从别的地方粘贴文本.想象一下:我正在尝试从网站上复制一个数字.不幸的是,我复制的文本也包含其他内容,例如" eggs: 14.33 EUR"而不仅仅是" 14.33".
现在,应用程序必须让我有机会粘贴和更正文本.如果我不被允许这样做,那么应用程序就是UX失败.如果应用程序使用该TextChanged事件来阻止我粘贴此文本,我将无法删除有问题的文本.
哇,这可能是一个非常广泛的话题......
对于数字文本框,您可能应该限制 KeyPress 事件期间的输入:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim allowedChars As String = "0123456789"
If allowedChars.IndexOf(e.KeyChar) = -1 Then
' Invalid Character
e.Handled = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
注意:此代码示例假设为 WinForms,对于 Web 必须使用不同的方法...
无论平台如何,您都应该查看框架提供的验证控件,这将允许您验证是否确实存在输入,值是否在指定范围内,并且还可以使用正则表达式编写更复杂的验证规则。
| 归档时间: |
|
| 查看次数: |
21633 次 |
| 最近记录: |