仅验证新键入的文本

时间:2014-05-03 21:06:02

标签: vb.net

我正在制作简单的应用程序。有一个文本框和一个ListBox。当用户在文本框中键入内容时,该文本会在某些验证过程后按空格分割添加到ListBox。我做完了。这是我的代码。

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

但我想升级它,因为验证过程需要更多时间。当用户在文本框中键入内容时,需要执行相同的过程,但仅针对新键入的文本。 (从光标位置向前到文本末尾)已经验证的文本不需要再次验证。我想有人可以提供帮助。

注意:用户也可以复制&粘贴文本框中的单词

提前感谢

1 个答案:

答案 0 :(得分:0)

我已经找到了一个解决方案,感谢lapheal msdn论坛成员

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