Автозаполнение в формах окна ComboBox

У меня есть функция автозаполнения в поле со списком, она работает правильно, но есть небольшая проблема, я сделал список предложений для длины текста более 3 символов, но список появляется после длины 4 символа (когда пользователь вводит пятый символ текста), что означает, что когда код, выполненный в первый раз, список не отображается здесь, это код в 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, но не влияет на Windows 7.


person Abid Qasem    schedule 19.05.2012    source источник
comment
Это заставляет приложение выйти? Как?   -  person Cody Gray    schedule 19.05.2012
comment
иногда, когда пользователь вводит текст более 3 символов, приложение выходит, не показывает сообщение об исключении или что-то в этом роде, просто выходит   -  person Abid Qasem    schedule 19.05.2012
comment
Не изменяйте AutoCompleteMode в обработчике событий, это имеет много побочных эффектов. Просто убедитесь, что источник пуст, если вы не хотите ничего отображать.   -  person Hans Passant    schedule 19.05.2012


Ответы (1)


Ответ был найден в этом сообщении: Динамическое изменение списка автозаполнения Textbox вызывает AccessViolationException, любой совет ?

Поэтому мне пришлось составить глобальный список предложений и инициализировать свойство AutoComplete в событии формы load, и это сработало хорошо.

person Abid Qasem    schedule 28.05.2012