如果/ else语句VB.Net

时间:2013-09-29 17:38:23

标签: vb.net if-statement

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,它将显示错误消息而不是崩溃。

4 个答案:

答案 0 :(得分:2)

您必须将.Text属性中的数字解析为整数。

所以你的If语句就像是

If Int32.Parse(txtNum1.Text) <= 0 ....

如果您打算在代码中多次重复使用该值,则可以在变量中提取它。

此外,正如评论中指出的那样,您应该使用Int32.TryParse(value, number)检查无效号码。那么,如果TryParse(..)方法返回false,则可以处理该案例。

要准确了解此方法的工作原理,您可以阅读this

但要快速value是要解析的字符串,number是从字符串中解析出来的整数值。该方法本身返回boolean(如果成功解析则为true,否则为false

答案 1 :(得分:2)

使用从字符串到数字的正确转换

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,因为前者使用short-circuit evaluation

我希望警告您,从错误消息中可以看出另一个陷阱。 VB编译器试图帮助您转换数字中的两个字符串。从我的角度来看,这是非常糟糕的。您应该负责处理这种禁用编译器自动转换的转换。转到项目的属性,页面Compile并设置the Option Strict to ON。通过这种方式,编译器将停止此自动转换,并将textBox1.Text <= 0

标记为错误

答案 2 :(得分: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

答案 3 :(得分:0)

您的比较无法正常工作,您没有使用相同的类型(字符串与整数) 我宁愿使用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