Vb.net 仅验证新键入的文本
我正在做一个简单的应用程序。有一个文本框和一个列表框。当用户在文本框中键入某个内容时,该文本会在经过一些验证过程后添加到按空格分割的列表框中。我做到了。这是我的密码Vb.net 仅验证新键入的文本,vb.net,Vb.net,我正在做一个简单的应用程序。有一个文本框和一个列表框。当用户在文本框中键入某个内容时,该文本会在经过一些验证过程后添加到按空格分割的列表框中。我做到了。这是我的密码 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 'split by space Dim arrText() As String = Split(TextBox
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
'split by space
Dim arrText() As String = Split(TextBox1.Text, " ")
ListBox1.Items.Clear()
'ValidateText is a function
For i = 0 To UBound(arrText)
ListBox1.Items.Add(ValidateText(arrText(i)))
Next i
End Sub
但是我想升级它,因为验证过程需要更多的时间。当用户在文本框中键入内容时,需要执行相同的过程,但只针对新键入的文本。(从光标位置向前到文本末尾)已验证的文本无需再次验证。我想有人可以帮忙
注意:用户也可以在文本框中复制和粘贴单词
提前感谢我找到了一个解决方案,这要感谢msdn论坛中的who成员
Private validatedDic As New Dictionary(Of String, String) 'or Dictionary(Of String, Object)?
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
'split by space
Dim arrText() As String = Split(TextBox3.Text, " ")
ListBox1.Items.Clear()
'ValidateText is a function
For i = 0 To UBound(arrText)
Dim text As String = String.Empty
If Not validatedDic.TryGetValue(arrText(i), text) Then
text = ValidateText(arrText(i))
validatedDic(arrText(i)) = text
End If
ListBox1.Items.Add(text)
Next i
End Sub
如何知道用户没有在光标前编辑文本?请保存当前文本的长度和哈希值。编辑后,检查新长度。如果相同或更大,则使用此哈希检查初始字节是否未更改。如果散列失败或新长度较短,则会进行另一次编辑。@just.another.programmer没有人可以在光标之前编辑文本“从光标位置向前到文本结尾”@Jongware你能给我一个代码示例吗?