从 Isnumeric() VB.NET 获取错误

Posted

技术标签:

【中文标题】从 Isnumeric() VB.NET 获取错误【英文标题】:Getting error from Isnumeric() VB.NET 【发布时间】:2013-09-21 17:06:03 【问题描述】:

在输入框中输入字母时出现运行时错误

Dim amount As String
        amount = InputBox("Enter the amount of people you want to participtate", "System Message")
        If amount < 0 Or Not (IsNumeric(amount)) Then
            MsgBox("Please enter positive number of people", vbExclamation, "System Message")
        End If

【问题讨论】:

If amount &lt; 0 语句出错了.. 请将 Option Strict On 放在代码文件的顶部或在项目属性中打开它。 【参考方案1】:

将字符串与数字进行比较是非常危险的,而且会在你的脸上炸开。你可以让它工作,但你必须仔细编码,确保你永远不会尝试比较无法转换为数字的字符串。这需要使用另一个运算符:

    If Not IsNumeric(amount) OrElse amount < 0 Then
        MsgBox("Please enter positive number of people", vbExclamation, "System Message")
    End If

注意更改的顺序和 OrElse(Or 的短路版本)的使用。如果左边已经是 True,它不会计算右边的表达式。

更以 .NET 为中心的方法是使用 Integer.TryParse() 将字符串转换为数字。

【讨论】:

【参考方案2】:

为了避免错误,你可以这样..

If IsNumeric(amount) Then
  If value(amount) > 0 Then
    'codes here
  Else      
     MsgBox("Please enter positive number of people", vbExclamation, "System Message")
  End If
Else
  MsgBox("Please enter a number of people", vbExclamation, "System Message")
End If

【讨论】:

【参考方案3】:

所以我正在研究验证一个文本框,首先我想确保它不是空的,并确保它是一个数字。我绝不是专家,但我会将我编写的代码用于验证用户输入。我把它放在一个函数中,因为我有很多用户必须输入的文本字段。

Class MainWindow 
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    tb2.Text = tbCheck(tb1)
End Sub

Private Function tbCheck(ByRef tb As TextBox) As Boolean
    tbCheck = tb.Text.Length > 0
    Try
        tbCheck = (tb.Text / 1) > 0
    Catch ex As Exception
        tbCheck = False
    End Try
    Return tbCheck
End Function

结束类

这只是我编写的用于检查代码是否按我希望的那样工作的简单程序。 希望这可以帮助某人,或者至少告诉我我是否缺少某些东西。

【讨论】:

以上是关于从 Isnumeric() VB.NET 获取错误的主要内容,如果未能解决你的问题,请参考以下文章

使用VB.NET向android模拟器发送通知获取错误401

从android解析jsonObject并在webservice vb.net中获取它

如何在 VB.net 上从数据库中获取数据到文本框

出现错误:“int”对象没有属性“isnumeric”

VB.NET:从 LCID 获取本地语言名称

如何从 VB.NET 中的 USB 端口获取数据