有没有办法在TextBox
中设置vb
,使其不接受用户输入的空格或非数字字符?我正在编写一个程序,其中TextBox
名为phoneField
,其中用户只应键入数字,如果用户尝试键入非数字字符或空格,则TextBox
中不应显示任何内容{1}}。怎么可能这样做?
答案 0 :(得分:2)
首先在掩码中使用0,仅允许使用数字字符。 其次,将ResetOnSpace属性指定为false
Me.MaskedTextBox.ResetOnSpace = False
这将拒绝用户输入的任何空格,除非它是提示的一部分。
答案 1 :(得分:1)
这是处理此问题的错误方法。你的应用程序会让你的用户疯狂。相反,让他们输入他们想要的任何东西,并在后端有代码,首先删除任何非数字,然后验证结果。
答案 2 :(得分:0)
答案 3 :(得分:0)
我使用继承的TextBox控件做了类似的事情。
这种做法的好处是它允许剪切,复制和粘贴功能正常。
''' <summary>
''' A TextBox control that only allows numeric input
''' </summary>
''' <remarks>Allows cut, copy and paste</remarks>
Public Class NumericTextBox
Inherits TextBox
Private _textBefore As String = ""
Protected Overrides Sub OnTextChanged(e As System.EventArgs)
Me.SuspendLayout()
If MyBase.Text.Length > 0 AndAlso Not IsNumeric(MyBase.Text) Then
' The text has been changed to a non numeric value
Dim selectionStart As Integer = MyBase.SelectionStart
MyBase.Text = _textBefore
MyBase.SelectionStart = selectionStart
Else
' The current text is numeric (or blank) remember it in case it changes to an invalid value
_textBefore = MyBase.Text
End If
MyBase.OnTextChanged(e)
Me.ResumeLayout()
End Sub
End Class
答案 4 :(得分:0)
实际上,如果提示字符是空格,则正确的设置有效:
.AllowPromptAsInput = False
.Mask = "00"
.ResetOnPrompt = False
.ResetOnSpace = True