我无法得到我如果声明工作正常。
我希望我的If语句检查我的两个文本框:名称和价格,以便它们不为空,并检查价格文本框,以便输入价格/数字等于或大于1.00。
现在,即使我输入的数字/价格高于1.00,该程序也会发出警告,这个数字只有在小于1.00的时候才应该这样做。
我正在使用:Option Explicit On,Option Strict On。
Private Sub Btn_ResrvCancl_Click(sender As Object, e As EventArgs) Handles Btn_ResrvCancl.Click, listBox_ResDisplay.DoubleClick
If listBox_ResDisplay.SelectedIndex >= 0 Then
If radioBtn_Reserve.Checked Then
If txt_Name.Text Is "" Or txt_Price.Text Is "" Or CDbl(txt_Price.Text) > 1.0 Then
MessageBox.Show("Please enter both your name and price (price must be 1.00 or higher)")
Else
Dim BookingSuccess As Boolean = seatmgrResrv.NewReservation(txt_Name.Text, CDbl(txt_Price.Text), CInt(listBox_ResDisplay.SelectedItem.ToString.Substring(0, 15).Trim))
If BookingSuccess = False Then
MessageBox.Show("Already booked!")
End If
End If
Else
Dim CancelSuccess As Boolean = seatmgrResrv.CancelReservation(CInt(listBox_ResDisplay.SelectedItem.ToString.Substring(0, 15).Trim))
If CancelSuccess = False Then
MessageBox.Show("Already vacant!")
End If
End If
UppsateList()
Else
MessageBox.Show("Please choose a seat")
End If
End Sub
根据我的理解,这必须是不正确的行,但我无法找到解决方案:
If txt_Name.Text Is "" Or txt_Price.Text Is "" Or CDbl(txt_Price.Text) > 1.0
提前致谢!
答案 0 :(得分:0)
这部分:
CDbl(txt_Price.Text) >= 1.0 Then
当价格大于或等于 1.0时,会显示验证消息。你真的要检查价值是否严格低于1.0:
CDbl(txt_Price.Text) < 1.0
答案 1 :(得分:0)
Is
运算符用于引用相等,即两个引用是否引用同一个对象,而您希望值相等,并使用=
运算符。编译器可能会进行优化,以使其中任何一个都可以工作,但这并不是不能正确执行的理由。
此外,您无法真正使用CDbl
,因为如果TextBox
为空或包含其他非数字值,它将引发异常。如果您使用OrElse
而不是Or
,则会处理空案例,而不是其他任何案例。
最后,您希望通知用户该金额是否少于1,而不是大于。
总而言之,这就是您的代码应该是这样的:
Dim price As Decimal
If txt_Name.Text = String.Empty OrElse
Not Decimal.TryParse(txt_Price.Text, price) OrElse
price < Decimal.One Then