如何使文本框仅接受整数? VB

时间:2018-07-03 12:29:51

标签: vb.net

我正在尝试进行战斗模拟,因此我需要这样做,以便文本框仅显示和接受整数。即1、5、268。我要的是小数点后四舍五入到最接近的整数。我可能只是在做傻事,但我想不出一个可以运行的解决方案,这是到目前为止我得到的:

    If AttackerMP.Text = Decimal Then
        AttackerMP.Text = Integer
    End If

4 个答案:

答案 0 :(得分:1)

您可以使用Validating事件,Decimal.TryParseMath.Round

Private Sub AttackerMP_Validating(sender As Object, e As EventArgs) Handles AttackerMP.Validating
    Dim d As Decimal
    If Decimal.TryParse(AttackerMP.Text, d) Then
        Dim roundedInt = CInt(Math.Round(d))
        AttackerMP.Text = roundedInt.ToString()
    Else
        AttackerMP.Text = ""
    End If
End Sub

答案 1 :(得分:1)

这是我前一段时间只允许输入数字的

Public Function NumericOnly(ByVal eChar As Char) As Boolean
    Dim chkStr As String = "0123456789"
    If chkStr.IndexOf(eChar) > -1 OrElse eChar = vbBack Then
        Return False
    Else
        Return True
    End If
End Function

您可以将其放置在模块中,以便在整个解决方案中都可以访问它。然后,对于要在其中使用这种功能的任何文本框,只需将以下内容放入其KeyPress事件中即可。

e.Handled = NumericOnly(e.KeyChar)

但是请记住,总有数字上/下控件已为您完成此操作。您甚至可以轻松地限制最小/最大金额。

答案 2 :(得分:0)

我如何使文本框仅接受项目中的数字和退格键:

Private Sub Timeout_TextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Timeout_TextBox.KeyPress
    'Allow Numbers only and Backspace
    If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
        If Not Asc(e.KeyChar) = 8 Then
            e.Handled = True
        End If
    End If
End Sub

答案 3 :(得分:0)

您不能将String =设置为数据类型。 .Text属性将始终是字符串。您可以使用内置的.net函数.GetType获取文字(12.3)或变量的数据类型。

您不能将数据类型(Integer)分配给带有等号的字符串。您将使用CInt(AttackerMP.Text)或Integer.TryParse(请参见Tim的答案)或其他几种转换/广播函数中的任何一个。

尽管蒂姆的答案是要走的路。我给你一些代码来玩。它允许您查看什么数字是什么类型。看看您是否获得了预期的结果。将12.3更改为其他数字,然后看看会发生什么。

Private Sub TestTypes()
        'This will return a string
        Dim t As Type = TextBox1.Text.GetType()
        MessageBox.Show(t.ToString)
        Dim t1 As Type = 12.3.GetType()
        If t1.Equals(GetType(Decimal)) Then
            MessageBox.Show("It is a decimal")
        ElseIf t1.Equals(GetType(Integer)) Then
            MessageBox.Show("It is an Integer")
        ElseIf t1.Equals(GetType(Single)) Then
            MessageBox.Show("It is a Single")
        ElseIf t1.Equals(GetType(Double)) Then
            MessageBox.Show("It is a Double")
        End If
    End Sub