我如何使用文本框textchanged事件更改用户输入类别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用文本框textchanged事件更改用户输入类别?相关的知识,希望对你有一定的参考价值。
InputValue1,.. OperationAdd是InputNumber类的实例。如何激活“严格开启”选项,将输入值分配给相应的文本框?
Class MainWindow
Dim InputValue1 As New InputNumber
Dim InputValue2 As New InputNumber
Dim ExpectedResultValue As New InputNumber
Dim OperationAdd As New InputNumber
Private Sub TBoxNumber1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles TBoxNumber1.TextChanged
TBoxNumber1.Text = InputValue1 'There is an error in this line, value of type InputNumber 'cannot be converted to a string
End Sub
下面是InputNumber类:
Public Class InputNumber
Inherits Input
Private _number As Integer
Public Property Number As Integer
Get
Return _number
End Get
Set(value As Integer)
_number = value
End Set
End Property
Protected Overrides Function Validate(s As String) As Boolean
Dim isValid As Boolean = Integer.TryParse(s, _number)
Return isValid
End Function
End Class
在我看来,您应该将TextBox
的输入输入到InputNumber
对象,而不是相反。这个:
TBoxNumber1.Text = InputValue1
可能应该是这个:
InputValue1.Validate(TBoxNumber1.Text)
[实际上是时候显示该InputNumber
的值了,您将不得不使用InputValue1.Number.ToString()
。就个人而言,我会将其添加到您的InputNumber
类中:
Public Overrides Function ToString() As String
Return Number.ToString()
End Function
然后您可以改用InputValue1.ToString()
。
编辑:
已经指出,Validate
方法是Protected
,因此不能这样调用。除非在Input
基类中有一定用途,否则我不确定其用途是什么,因为就目前而言,您仍然需要从外部进行验证,例如
Dim number As Integer
If Integer.TryParse(TBoxNumber1.Text, number) Then
InputValue1.Number = number
End If
我正在质疑InputNumber
的实施。在当前形式中这没有多大意义。我们不知道何时进行验证,并且Number
实际上是整数。
我会做这样的事情。
Public Class InputNumber
Private _number As Integer
Private _hasNumber As Boolean
Public Sub New(s As String)
SetNumber(s)
End Sub
Public Sub New()
End Sub
Public ReadOnly Property Number As Integer
Get
Return _number
End Get
End Property
Public ReadOnly Property HasNumber As Boolean
Get
Return _hasNumber
End Get
End Property
Public Sub SetNumber(s As String)
_hasNumber = Integer.TryParse(s, _number)
End Sub
' For consistency...
Public Sub SetNumber(i As Integer)
_hasNumber = true
_number = i
End Sub
Public Overrides Function ToString() As String
If HasNumber Then Return Number.ToString()
Return String.Empty
End Function
End Class
然后您的用法将是((我同意@jmcilhinney,当您发生TextChange
事件时,您想从文本框中获取一个值并设置一个变量)]
Dim inp As New InputNumber("ddd")
txtBox1.Text = If(inp.HasNumber, inp.Number.ToString(), "NO VALUE") '' example to use HasNumber
inp.SetNumber("sss")
txtBox2.Text = inp.ToString() '' Example to use straight value
inp.SetNumber(10)
Dim current As Integer = If(inp.HasNumber, inp.Number, -1) '' using as numeric value
现在,这个课程更有意义
以上是关于我如何使用文本框textchanged事件更改用户输入类别?的主要内容,如果未能解决你的问题,请参考以下文章
我在 youtube 上看到的代码不起作用。我需要通过在文本框上使用 textchanged 事件来执行 Rowfilter
带有TextChanged事件的文本框不会在第二次输入中显示日期