我正在检查在 vb 文本框中输入的特定启动大小。我们必须使用子例程来检查大小,然后在单击按钮后调用该例程。当我单击按钮时,无论值是什么,即使输入了正确的大小,它也会返回 false。这是子例程和按钮单击的代码。
Dim check As Boolean
Dim b As Boolean
Sub salomonsize(ByVal a As Integer, ByRef check As Boolean)
If a = 6 Or 7 Or 8 Or 9 Or 10 Or 11 Or 12 Then
b = True
Else
b = False
End If
End Sub
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Call salomonsize(txtSalomonSize.Text, check)
If check = False Then
MsgBox("Wrong size")
Exit Sub
End If
最佳答案
我发现您的日常生活中有一些可以改进的地方。首先,比较应该是:
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
您之前执行此操作的方式 If a = 6 or 7 or 8 ...
不起作用,因为任何无符号整数将始终计算为 true。因此,您的代码始终会得到 b = true
。您总是得到 false 的原因是因为 Visual Basic 默认情况下将 bool 值初始化为 false,并且您从未向 check
分配任何内容,因此 check = false
。
另一方面,我会创建一个函数,而不是通过引用传递值。函数将进行所有必要的计算,并返回一个值。完整代码如下:
Function salomonsize(ByVal a As Integer) As Boolean
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
Return True
Else
Return False
End If
End Function
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
Dim check = salomonsize(txtSalomonSize.Text)
If check = False Then
MsgBox("Wrong size")
Exit Sub
End If
End Sub
按照您的做法,您分配了b = true
和b = false
。我相信您打算将 check
指定为 true 或 false,因为它是您稍后检查的值。
编辑:执行此操作并避免大量比较的更好方法是使用数组:
Function salomonsize(ByVal a As Integer) As Boolean
Dim ValidNumbers As Integer() = {6, 7, 8, 9, 10, 11, 12}
If ValidNumbers.Contains(a) Then
Return True
Else
Return False
End If
End Function
如您所见,如果您需要添加更多数字,只需将它们添加到数组中即可。如果需要,您甚至可以从文件中读取它们。然后使用 .Contains 函数来比较您的值。您甚至可以简单地执行 Return ValidNumbers.Contains(a)
并完全避免 If/Else:
Function salomonsize(ByVal a As Integer) As Boolean
Dim ValidNumbers As Integer() = {6, 7, 8, 9, 10, 11, 12}
return ValidNumbers.Contains(a)
End Function
关于vb.net - Sub 检查文本框中的大小,vb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40925676/