2014-05-03 105 views
0

我在做簡單的應用程序。有一個文本框和一個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 

但我想升級它,因爲驗證過程需要更多時間。當用戶在文本框中輸入某些內容時,需要執行相同的過程,但只能輸入新輸入的文本。 (從光標位置向前到文本的末尾)已驗證的文本不需要再次驗證。我認爲有人可以提供幫助。

注:用戶可以同時在文本框中

謝謝複製&粘貼的話提前

+0

你如何知道用戶沒有編輯光標前的文本? –

+1

保存當前文本的長度和散列。編輯後,檢查新的長度。如果相同或更大,請使用此散列來檢查初始字節是否未更改。如果哈希失敗或新的長度更少,那麼還有另一個編輯。 – usr2564301

+0

@ just.another.programmer沒有人可以編輯光標前的文本「從光標位置向前到文本的末尾」 – samgi

回答

0

我有成員在MSDN論壇誰找到了解決由於lapheal

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