2017-04-19 2 views
0

私はSuggestAndAppendテキストのモードでオートコンプリートのテキストボックスを作成しました。私は、テキストボックスのテキストがユーザーによって新しく入力されたのか、それとも単にソースコレクションから追加されたのかを検出したいのですか?AutoCompleteテキストがユーザーから入力されたか、AutoCompleteコレクションから追加されたかを検出するためのテキストボックス?

テキストボックスにフォーカスがないときはチェックできますが、テキストボックスにフォーカスがあるとすぐに検出する別の方法はありますか?

+0

「KeyPress」イベントと「TextChanged」イベントを組み合わせると、必要な情報が得られると思います。現在の 'Text'値を' TextChanged'のフィールドに格納し、新しいキーボード入力を 'KeyPress'の別のフィールドに格納し、次の' TextChanged'に、現在の 'Text'を比較して以前の 'Text'の結果とキーボード入力の有無を示します。 – jmcilhinney

答えて

0

当面は、タスクを実装するためのコードを書くことができます。今すぐこのコードは、新しく型付けされたテキストがコレクション内のアイテムの一部でないかどうかを検出できます。ユーザーがコレクション内のエントリの一部とみなせる新しいテキストを入力した場合はどうなりますか?すなわち、コレクションにBBC、CNN、FOX Newのようなエントリが含まれていて、ユーザがCN(Cartoon Network)のみを入力したいとしたらどうでしょうか?この場合、 "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 

次のコードは、テキストボックス内のテキストはコレクションに新しいかNOである場合には、当分の間、それがLeaveイベントでそれをキャッチひよこすることができます。 [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 
関連する問題