我该如何修复此代码?如果文本框为空,则会出错。
Private Sub MetroButton1_Click(sender As Object, e As EventArgs) Handles MetroButton1.Click
If BunifuMaterialTextbox2.Text < 3 Or BunifuMaterialTextbox2.Text = "" Then
MsgBox("must have atleast 3 pesos profit")
End If
End Sub
我想要的是如果textbox.text <3或者textbox.text为空,则显示错误消息
使用val(): - 如果val(BunifuMaterialTextbox2.Text)<3或val(BunifuMaterialTextbox2.Text)= 0则MsgBox(“必须具有至少3比索利润”)结束如果和管理文本框仅允许数字。实际上使用是将数字与字符串进行比较。使用上面的代码它会对你有所帮助。
您应该打开Option Strict On。只有少数边缘情况允许某些事情成功,如果没有它就会成功,而那些重写通常是微不足道的。它的作用与您将要执行的操作相同,但它使可能的类型失败不太清楚。
If BunifuMaterialTextbox2.Text < 3 Or BunifuMaterialTextbox2.Text = "" Then
因为您有Option Strict Off,所以将其视为
If CInt(BunifuMaterialTextbox2.Text) < 3 Or BunifuMaterialTextbox2.Text = "" Then
CInt在Nothing上成功,返回0,但在“”上失败,抛出异常。由于您使用Or而不是OrElse,因此将始终评估两个条件。此外,您具有将首先导致异常的条件,因此每当您的文本框为空时,它都会抛出异常。
您可以将其重写为:If Bunifu MaterialTextbox2.Text =“”OrElse Bunifu Material Textbox2.Text <3 Then
一切都会正常工作。但我真的不推荐它,因为不知道幕后发生了什么,它很脆弱。
如果您将其重写为:
Dim bunifuMaterial2 as Integer
If not Integer.TryParse(BunifuMaterialTextbox2.Text, bunifuMaterial2) OrElse bunifuMaterial2 < 3 Then
您不仅可以避免空的异常,而且如果他们输入非数字值(例如“cat”),也可以避免异常。