Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2013, 10:36   #1
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию textbox+autocomplete=ошибка

Добрый день.
Вылезла ошибка с созданием/удалением свойства 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;
}
Также почти всегда выскакивает ошибка при вводе одного символа и нажатии Break (чтобы punto switcher изменил раскладку).
andrew_jr20 вне форума Ответить с цитированием
Старый 19.02.2013, 11:32   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

StackTrace исключения покажите
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 19.02.2013, 15:47   #3
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

В простом приложении с одной формой и одним textbox на нём выкидывает такой трейс (пришлось поставить try..catch в Program.cs вокруг Application.Run(new Form1())
Код:
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(Form mainForm)
в WindowsFormsApplication1.Program.Main() 
в C:\\Documents and Settings\\andrew\\Local Settings\\Application Data\\Temporary Projects\\WindowsFormsApplication1\\Program.cs:строка 20
andrew_jr20 вне форума Ответить с цитированием
Старый 28.02.2013, 14:42   #4
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

В 4.0 проверил - всё то же самое
andrew_jr20 вне форума Ответить с цитированием
Старый 01.03.2013, 06:50   #5
Object_File
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 23
По умолчанию

Странно, у меня ваш код работает. Попробуйте создать новый проект.
Object_File вне форума Ответить с цитированием
Старый 01.03.2013, 15:34   #6
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Object_File Посмотреть сообщение
Странно, у меня ваш код работает. Попробуйте создать новый проект.
Работает корректно, без ошибок? Просто у меня что в моём проекте, что в специально созданном пустом (код которого я привёл) - проблема одна и та же. Причём недавно заметил, что если запускать через F5 debug-версию - ошибка вылетает гораздо чаще, в релизе гораздо реже косячит.
andrew_jr20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внести данные из Textbox Form2 в TextBox Form1 uralshans Microsoft Office Excel 1 07.01.2013 17:15
combobox+autocomplete andrew_jr20 C# (си шарп) 0 22.10.2011 14:38
MS рекомендует использовать AutoComplete в GUI Glen Свободное общение 0 04.04.2011 22:43
ошибка про вводе текста через TextBox в ячейку листа alvazor Microsoft Office Excel 3 21.09.2010 12:36