Войти

Показать полную графическую версию : textbox+autocomplete=error


andrew_jr20
10-02-2013, 00:45
Добрый день.
Вылезла ошибка с созданием/удалением свойства 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;
}




© OSzone.net 2001-2012