If txtNum1.Text <= 0 Or txtNum2.Text <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
我是编程新手。我正在尝试创建一个 if/else 语句,以便如果任一文本框中的数字小于或等于 0,它将显示一条错误消息并且不会崩溃。
If txtNum1.Text <= 0 Or txtNum2.Text <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
我是编程新手。我正在尝试创建一个 if/else 语句,以便如果任一文本框中的数字小于或等于 0,它将显示一条错误消息并且不会崩溃。
您必须将.Text
属性中的数字解析为整数。
所以你的 If 语句将类似于
If Int32.Parse(txtNum1.Text) <= 0 ....
如果您计划在代码中多次重用该值,则可以将其提取到变量中。
此外,正如评论中所指出的,您应该检查无效数字,您可以使用Int32.TryParse(value, number)
. 那么,如果TryParse(..)
方法返回false
,你就可以处理这种情况。
要确切了解此方法的工作原理,您可以阅读此
但要使其快速value
的是您要解析的字符串,并且number
是从字符串中解析出来的整数值。该方法本身返回一个boolean
(如果成功解析,则返回 true,false
否则返回)
使用从字符串到数字的正确转换
Dim res1 As Integer
Dim res2 as Integer
if Not Int.TryParse(txtNum1.Text, res1) then
lblResult.Text = "Enter a valid first number "
return
End If
if Not Int.TryParse(txtNum2.Text, res2) then
lblResult.Text = "Enter a valid second number "
return
End If
If res1 <= 0 OrElse res2 <= 0 Then
lblResult.Text = "Result Error: Enter numbers greater than zero"
End If
您需要将用户输入转换为数值。文本框的 Text 属性是字符串而不是数字。如果你想转换它,你应该准备好接收错误的输入(比如非数值)。
最好的方法是使用 Int.TryParse 尝试将用户键入的值转换为数字,如果失败则返回 false。如果成功,转换后的数字将在第二个参数中找到。
另请注意,您应该使用OrElse而不是 Or,因为前者使用短路评估
我想警告您另一个从错误消息中似乎很明显的陷阱。VB 编译器试图帮助您将两个字符串转换为数字。从我的角度来看,这非常糟糕。您应该负责处理这种禁用编译器自动转换的转换。转到您的项目、页面Compile
和设置的属性the Option Strict to ON
。通过这种方式,编译器将停止这种自动转换并发出错误信号textBox1.Text <= 0
这样的东西会更好,
你检查它是否是一个 int 然后检查它是零还是小于
Dim value1, value2 As Integer
If not Integer.TryParse(txtNum1.text, value1) orelse value1 <= 0 OrElse not Integer.TryParse(txtNum2.text, value2) orelse value2 <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
您的比较无法正常工作,您没有使用相同的类型(字符串与整数)我宁愿使用 integer.tryParse
所以代码变成了这样:
dim n1 as integer
dim n2 as integer
if integer.tryparse(txtNum1.Text,n1) and integer.tryparse(txtnum2.text,n2) then
If n1 <= 0 Or n2 <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
else
lblResult.Text = "please input numbers"
end if