我在 DataGridView 中编码,并验证单元格是否仅具有数字和逗号格式,该单元格用于文档页面,返回 true 或接受的示例格式:1,2 或 1,2,5 但不是1,,2 或 1,,,6,2
我为此做了一个函数,它工作正常,但是我不习惯使用我的代码,我希望有比我更好的代码。
请更正我的代码以获得更好的效果。
谢谢。
Private Function isCELLPageNumb(ByRef valyo As String, ByVal origMaxPage As String) As Boolean
If valyo = "0" Or valyo = "," Then
valyo = origMaxPage
Return False
End If
Dim allowedChars As String = "0123456789,"
For i As Integer = (valyo.Length - 1) To 0 Step -1
If allowedChars.IndexOf(valyo(i)) = -1 Then
valyo = origMaxPage
Return False
End If
Try
If valyo(i) = "," Then
If valyo(i + 1) = "," Then
valyo = origMaxPage
Return False
End If
End If
Catch ex As Exception
valyo = origMaxPage
Return False
End Try
''I THINK I HAVE TO SEE IF THE COMMA NEXT NUMBER IS GREATER THAN THE MAXPAGE
''If valyo(i)>origMaxPage then
''End If
Next
Return True
End Function
编辑了 origMaxPage
Private Function isCELLPageNumb(ByRef valyo As String, ByVal origMaxPage As String) As Boolean
If valyo = "0" Or valyo = "," Then
valyo = origMaxPage
Return False
End If
Dim allowedChars As String = "0123456789,"
For i As Integer = (valyo.Length - 1) To 0 Step -1
''IF ALLOWED CHARACTERS NOT IN THE INDEX
If allowedChars.IndexOf(valyo(i)) = -1 Then
valyo = origMaxPage
Return False
End If
Try
''IF VALYO IS COMMA REPEATED
If valyo(i) = "," Then
If valyo(i + 1) = "," Then
valyo = origMaxPage
Return False
End If
End If
Catch ex As Exception
valyo = origMaxPage
Return False
End Try
Try
''IF VALYO GREATHER THAN THE MAXPAGE
If valyo(i) = "," Then
Dim twodigit As String = valyo(i + 1) & valyo(i + 2)
Dim numtwodigit As UInt32 = Val(twodigit)
If numtwodigit > origMaxPage Then
valyo = origMaxPage
Return False
End If
End If
Catch ex As Exception
valyo = origMaxPage
Return False
End Try
Next
Return True
End Function
代码的问题,如果maxpage是12,那么用户输入的是1,3,5,1111呢?
输入可能不接受负数,例如:-1 或 -123
谢谢