我正在处理两个用户输入控件TextInput和NumericInput的问题。 TextInput接受所有字符,而NumericInput仅接受数字输入。
我知道对于我的NumericInput Add Sub,我可能必须创建一个布尔值以检查输入值是否为数字,然后使用该布尔值创建一个If语句,但是,我不确定如何去解决这个问题。
这是我能想到的代码。
对于我的TextInput代码,我目前具有以下内容:
Dim value As String 'current value'
Public Class TextInput
Public Overridable Sub Add(c As Char)
If value.length = 0 Then
value = Char.toString(c)
Else
value+=c
End If
End Sub
Public Function GetValue() As String
Return value
End Function
End Class
对于我的NumericInput代码,我目前具有以下内容:
Public Class NumericInput
Inherits TextInput
Dim numericCheck As Boolean
Public Overrides Sub Add(c As Char)
If Not value.length = 0 Then
numericCheck = isNumeric(value)
End If
If numericCheck = True Then
value+=c
End If
End Sub
End Class
输出代码如下:
Public Sub Main()
Dim input As TextInput = New NumericInput()
input.Add(CChar("1"))
input.Add(CChar("a"))
input.Add(CChar("0"))
Console.WriteLine(input.GetValue())
End Sub
答案 0 :(得分:1)
首先,变量值应封装在TextInput类中。您可以将其声明为受保护的,以便派生类可以访问它。 value变量必须具有初始值,否则必须为value。Length引发异常,因为它为null(无)。
第二,您可以使用IsNumeric函数检查字符是否为数字。如果是数字,然后调用Add的基本方法。
Public Class TextInput
Protected value As String = "" 'current value'
Public Overridable Sub Add(c As Char)
If value.Length = 0 Then
value = Char.toString(c)
Else
value += c
End If
End Sub
Public Function GetValue() As String
Return value
End Function
End Class
Public Class NumericInput
Inherits TextInput
Public Overrides Sub Add(c As Char)
If IsNumeric(c) Then
MyBase.Add(c)
End If
End Sub
End Class