-2

有没有办法设置 a TextBoxinvb使其不接受用户输入的空格或非数字字符?我正在编写一个程序,TextBox其中phoneField用户应该只输入数字,如果用户尝试输入非数字字符或空格,则不应在TextBox. 那怎么可能呢?

4

5 回答 5

2

首先在掩码中使用 0 以仅允许数字字符。二、将ResetOnSpace属性赋值为false

Me.MaskedTextBox.ResetOnSpace = False

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

于 2012-05-31T20:49:18.893 回答
1

这是错误的处理方式。你会让你的用户对你的应用大发雷霆。取而代之的是,让他们输入他们想要的任何内容,并在后端编写代码,首先去除任何非数字,然后验证结果。

于 2012-04-19T13:48:57.333 回答
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
于 2012-10-14T22:58:27.157 回答
0

使用MaskedTextBox 类

类似的东西:

Me.MaskedTextBox1.Mask = "0-000-0000000"
于 2012-04-19T10:00:28.540 回答
0

实际上,如果您的提示字符是空格,则正确的设置有效:

    .AllowPromptAsInput = False    
    .Mask = "00"     
    .ResetOnPrompt = False
    .ResetOnSpace = True
于 2017-01-16T05:05:35.640 回答