Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   textbox+autocomplete=error (http://forum.oszone.net/showthread.php?t=253621)

andrew_jr20 10-02-2013 00:45 2086730

textbox+autocomplete=error
 
Добрый день.
Вылезла ошибка с созданием/удалением свойства autocomplete для textbox - не могу победить.
Создал простую форму для воссоздания - работает и там. Вот код, которым можно воспроизвести ошибку (пустая форма с единственным textbox и обработчиком TextChanged):
Код:

        private void txtClient_TextChanged(object sender, EventArgs e)
        {
            if (txtClient.TextLength == 0) 
            {
                txtClient.AutoCompleteCustomSource.Clear();
                txtClient.AutoCompleteMode = AutoCompleteMode.None;
                txtClient.AutoCompleteSource = AutoCompleteSource.None;
            }
            else if (txtClient.TextLength == 1)
            {
                if (txtClient.AutoCompleteMode == AutoCompleteMode.None)
                {
                    txtClient.AutoCompleteMode = AutoCompleteMode.Suggest;
                    txtClient.AutoCompleteSource = AutoCompleteSource.CustomSource;
                    txtClient.AutoCompleteCustomSource.Add("Иванов");
                }
            }
        }

При вводе/удалении одного символа в поле (достаточно иногда и одного раза, но иногда может потребоваться и 4-5 попыток) вылетает ошибка "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Воспроизводится на XP и 7, .net 2.0 и 3.5. Где косяк? Что делать и куда копать - ума не приложу :(

PS:
по большому счёту, вылетает даже на таком коде:
Код:

if (txtClient.TextLength == 0) 
{
    txtClient.AutoCompleteCustomSource.Clear();
}
else if (txtClient.TextLength == 1)
{
    txtClient.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
}



Время: 10:57.

Время: 10:57.
© OSzone.net 2001-