0
我已經使用SuggestAndAppend文本模式創建了一個自動完成文本框。我想檢測文本框中的文本是由用戶新輸入的,還是僅從源集合追加的?自動完成文本框檢測文本是從用戶鍵入還是從自動完成集合追加?
它可以檢查文本框鬆散焦點時,但有沒有另一種方式立即檢測焦點仍然在文本框?
有什麼想法嗎?
我已經使用SuggestAndAppend文本模式創建了一個自動完成文本框。我想檢測文本框中的文本是由用戶新輸入的,還是僅從源集合追加的?自動完成文本框檢測文本是從用戶鍵入還是從自動完成集合追加?
它可以檢查文本框鬆散焦點時,但有沒有另一種方式立即檢測焦點仍然在文本框?
有什麼想法嗎?
暫時,我可以寫一個代碼來執行任務。現在,這段代碼可以檢測新輸入的文本是否不是集合中任何項目的一部分。但是如果用戶輸入了可以被認爲是集合中條目的一部分的新文本呢?即如果收藏包含如下條目:BBC,CNN,FOX New和用戶只想鍵入CN(卡通網絡)..在這種情況下,「CN」將成爲CNN的一部分,然後代碼將不會將其檢測爲新條目。
Private Sub TextBox1_TextChanged_1(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim isNew As Boolean = True
For i As Integer = 0 To TextBox1.AutoCompleteCustomSource.Count - 1
If UCase(Trim(TextBox1.AutoCompleteCustomSource(i))) Like UCase(Trim(TextBox1.Text)) & "*" Then
isNew = False
Exit For
End If
Next
If isNew = True Then
MsgBox("Custome")
Else
End If
End Sub
下面的代碼可以小雞,如果文本框中的文本是新的收集或不,暫時,它抓住它在離開事件。它應該改進,以捕捉[Enter]鍵以及
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
Dim isNew As Boolean = True
For i As Integer = 0 To TextBox1.AutoCompleteCustomSource.Count - 1
If TextBox1.AutoCompleteCustomSource.Contains(UCase(Trim(TextBox1.Text))) Then
isNew = False
End If
Next
If isNew = True Then
MsgBox("Custome")
Else
End If
End Sub
我會認爲'KeyPress'和'TextChanged'事件的組合會給你你需要的信息。您可以將當前的Text值存儲在TextChanged的某個字段中,將任何新的鍵盤輸入存儲在KeyPress的另一個字段中,然後在下一個TextChanged上比較當前的Text以查看它是否爲前一個「文本」和鍵盤輸入的結果與否。 – jmcilhinney