我有以下代码:
Private Sub TxtPStof_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPStof.KeyPress
e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = ".")
End Sub
Run Code Online (Sandbox Code Playgroud)
只允许数字和.在我的文本框中,但我还需要能够使用退格键或删除按钮删除值.
这可能吗?
谢谢!:)
这是错误的做法.
人们普遍认为限制用户的输入对用户体验不利,并且你总是无法处理特殊情况(比如Ctrl+ V,例如?啊,你忘记了这一点.每个人都这样做).
相反,.NET提供用于验证用户输入的Validating事件.你应该拦截那个事件,而不是按键.不要让他们不过希望用户在输入文字; 特别是,允许他们犯错误(如键入错误)没有中断-这将是非常破坏性的,不会有帮助.
然后,一旦它们完成(因为输入焦点离开控件),一次性进行输入验证.
虽然我完全同意Konrad Rudolph的答案
(在KeyPress活动中处理用户输入真是一件混乱的事情)但
我想回答你的问题.
KeyPress文档中的MSDN 声明了这一点The KeyPress event is not raised by noncharacter keys.这意味着您没有获得Delete键,只有BackSpace键.您可以通过对事件处理程序的这一小改动来处理这种情况
Private Sub TxtPStof_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPStof.KeyPress
if e.KeyChar <> ControlChars.Back then
e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = ".")
end if
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43356 次 |
| 最近记录: |