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