1

コンボボックスにオートコンプリート機能があり、正常に動作しますが、問題はほとんどありません。テキストの長さが3文字を超える場合に候補リストを表示しましたが、リストは4文字の長さの後に表示されます(ユーザーが5文字を入力した場合)。テキストの)これは、リストが最初に実行されたときにリストがここに表示されない場合は、Text_Changedイベントのコードであることを意味します

 Private Sub TxtItem_TextChanged(sender As System.Object, e As System.EventArgs) Handles TxtItem.TextChanged


    If Trim(TxtItem.Text) <> "" And Trim(TxtItem.Text).Length > 3 Then
        'Autocomplete
        Dim Bl As New ItemBL
        Dim suggestions = Bl.DisplayLikeNameList(Trim(TxtItem.Text))
        Dim MySource As New AutoCompleteStringCollection()
        MySource.AddRange(suggestions.ToArray)

        With TxtItem
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.CustomSource
            .AutoCompleteCustomSource = MySource
        End With
        TxtItem.Select(TxtItem.Text.Length, 0)
        Exit Sub
    Else
        TxtItem.AutoCompleteMode = AutoCompleteMode.None
    End If

End Sub

注:この問題により、Windows XPでは(場合によっては)アプリケーションが終了しますが、Windows7では影響しません。

4

1 に答える 1

0

答えはこの投稿で見つかりました: Textboxのオートコンプリートリストを動的に変更すると、AccessViolationExceptionが発生します。アドバイスはありますか?

そのため、提案のグローバルリストを作成 AutoCompleteし、Formloadイベントでプロパティを初期化する必要があり、うまく機能しました。

于 2012-05-28T13:48:42.867 に答える