VB.net нужно текстовое поле, чтобы принимать только цифры - PullRequest
24 голосов
/ 02 апреля 2012

Я довольно новичок в VB.net (самоучка), и мне было просто интересно, может ли кто-нибудь помочь мне с кодом.Я не пытаюсь сделать что-то слишком сложное, просто есть TextBox, который принимает числовое значение от 1 до 10. Я не хочу, чтобы он принимал строку или любое число выше 10. Если кто-то набирает слово или символпоявится сообщение об ошибке, сообщающее ему, чтобы ввести правильный номер.Это то, что у меня есть;очевидно, это не так здорово, так как у меня проблемы.Еще раз спасибо всем, кто может помочь.

 If TxtBox.Text > 10 Then
        MessageBox.Show("Please Enter a Number from 1 to 10")
        TxtBox.Focus()
    ElseIf TxtBox.Text < 10 Then
        MessageBox.Show("Thank You, your rating was " & TxtBox.Text)
        Total = Total + 1
    ElseIf IsNumeric(TxtBox.Text) Then
        MessageBox.Show("Thank you, your rating was " & ValueTxtBox.Text)
    End If

    ValueTxtBox.Clear()
    ValueTxtBox.Focus()

Ответы [ 25 ]

0 голосов
/ 06 февраля 2013
Public Function Isnumber(ByVal KCode As String) As Boolean
    If Not Isnumeric(KCode) And KCode <> ChrW(Keys.Back) And KCode <> ChrW(Keys.Enter) And KCode <> "."c Then

        MsgBox("Please Enter Numbers only", MsgBoxStyle.OkOnly)
    End If
End Function

Private Sub txtBalance_KeyPress(ByVal sender As System.Object, ByVal e As 
System.Windows.Forms.KeyPressEventArgs) Handles txtBalance.KeyPress

    If Not Isnumber(e.KeyChar) Then
        e.KeyChar = ""
    End If

End Sub
0 голосов
/ 02 апреля 2012

Прежде всего, установите TextBox's MaxLength на 2, что ограничит объем ввода текста в TextBox. Тогда вы можете попробовать что-то подобное, используя KeyPress Event. Поскольку вы используете максимум 2 цифры (10), вам нужно будет использовать Key, например, Enter, чтобы начать проверку.

Private Sub TextBox1_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    Dim tb As TextBox = CType(sender, TextBox)
    If Not IsNumeric(e.KeyChar) Then    'Check if Numeric
        If Char.IsControl(e.KeyChar) Then  'If not Numeric Check if a Control
            If e.KeyChar = ChrW(Keys.Enter) Then
                If Val(tb.Text) > 10 Then  'Check Bounds
                    tb.Text = ""
                    ShowPassFail(False)
                Else
                    ShowPassFail(True)
                End If
                e.Handled = True
            End If
            Exit Sub
        End If
        e.Handled = True
        ShowPassFail(False)
    End If
End Sub

Private Sub ShowPassFail(pass As Boolean)
    If pass Then
        MessageBox.Show("Thank you, your rating was " & TextBox1.Text)
    Else
        MessageBox.Show("Please Enter a Number from 1 to 10")
    End If
    TextBox1.Clear()
    TextBox1.Focus()
End Sub
0 голосов
/ 02 апреля 2012

Вы можете использовать следующий код Textbox Keypress Event:

Private Sub txtbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtbox1.KeyPress
Try
If val(txtbox1.text) < 10 then
If Char.IsLetterOrDigit(e.KeyChar) = False And Char.IsControl(e.KeyChar) = False Then
e.Handled = True
End If
Else
e.Handled = True
End If
Catch ex As Exception
ShowException(ex.Message, MESSAGEBOX_TITLE, ex)
End Try
End Sub

В этом коде разрешены только цифры, и вы можете ввести только цифры от 1 до 10.

0 голосов
/ 21 сентября 2017

каждое текстовое поле имеет проверяющее и проверенное событие, которое вы можете использовать затем следующим образом: -

Private Sub PriceTxt_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles PriceTxt.Validating
                If Not IsNumeric(PriceTxt.Text) Then
                 PriceTxt.BackColor = Color.Red
                 MsgBox("The Price Should Be Numeric Only , Enter Again", vbCritical)
                 PriceTxt.Text = ""
                 PriceTxt.BackColor = Color.White
                End If
End Sub
0 голосов
/ 28 мая 2015

Вы можете использовать onkeydown Свойство TextBox для ограничения его значения только числами.

<asp:TextBox ID="TextBox1" runat="server" onkeydown = "return (!(event.keyCode>=65) && event.keyCode!=32);"></asp:TextBox>

! (KeyCode> = 65) проверкадля исключения букв.

keyCode! = 32 проверка предназначена для исключения символа пробела между числами.

Если вы хотите исключить символы также из ввода в текстовое поле, товключите нижеприведенное условие также в свойство onkeydown.

!(event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57))

Таким образом, TextBox, наконец, станет

<asp:TextBox ID="TextBox1" runat="server" onkeydown = "return (!(event.keyCode>=65) && event.keyCode!=32 && !(event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)));"></asp:TextBox>

Объяснение:

KeyCode для «a» - это «65», а «z» - «90».

KeyCodes от «90» до «222», которые являются другими символами, также не нужны.

KeyCode для клавиши «Пробел» - это «32», которая также не нужна.

Тогда комбинация клавиш «Shift» и «Number» (обозначающая символы) также не требуется.KeyCode для '0' - это '48', а '9' - это '57'.

Следовательно, все они включены в само объявление TextBox, которое дает желаемый результат.

Попробуйте и посмотрите.

...