设置TextBox,以便用户无法键入非数字字符或空格

时间:2012-04-19 09:56:30

标签: vb.net textbox

有没有办法在TextBox中设置vb,使其不接受用户输入的空格或非数字字符?我正在编写一个程序,其中TextBox名为phoneField,其中用户只应键入数字,如果用户尝试键入非数字字符或空格,则TextBox中不应显示任何内容{1}}。怎么可能这样做?

5 个答案:

答案 0 :(得分:2)

首先在掩码中使用0,仅允许使用数字字符。 其次,将ResetOnSpace属性指定为false

  

Me.MaskedTextBox.ResetOnSpace = False

这将拒绝用户输入的任何空格,除非它是提示的一部分。

答案 1 :(得分:1)

这是处理此问题的错误方法。你的应用程序会让你的用户疯狂。相反,让他们输入他们想要的任何东西,并在后端有代码,首先删除任何非数字,然后验证结果。

答案 2 :(得分:0)

使用MaskedTextBox Class

类似的东西:

Me.MaskedTextBox1.Mask = "0-000-0000000"

答案 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