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你能给我一个代码示例吗?