自动完成文本框,用于检测文本是从用户输入还是从自动完成集合中追加?

时间:2017-04-19 04:28:00

标签: vb.net autocomplete textbox

我创建了一个自动完成文本框,其模式为SuggestAndAppend。我想检测文本框中的文本是否是由用户新输入的,还是只是从源集合中添加?

当文本框松散焦点时可以检查,但是还有另一种方法可以立即检测到焦点仍在文本框中吗?

任何想法?

1 个答案:

答案 0 :(得分:0)

目前,我可以编写代码来实现任务。现在,此代码可以检测新键入的文本是否不是集合中任何项目的一部分。但是如果用户键入了一个可以被视为集合中条目一部分的新文本呢?即如果该集合包含如下条目: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

如果文本框中的文本对于集合是新的或者没有,则下面的代码可以小鸡,暂时它会在Leave Event中捕获它。应该改进以捕捉[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