событие selectedIndexChanged, textChange

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

событие selectedIndexChanged, textChange

Сообщение Anta » 27.02.2013 (Ср) 3:57

Подскажите, возможно кто-то сталкивался.
В listebox имеется список элементов, по событию selectedIndexChanged (при клике мышкой на элементе) выполняется запрос к таблице БД для подсчета...проверочного числа и тд... Но есть необходимости по нажатию на кнопку на форме удалить выделенный элемент из listebox, при удаление элементя автоматически срабатывает событие selectedIndexChanged и начинается подсчет, обращение к БД, выпадает ошибка: value DB NULL (получается, что элемент, который необходим для выполнения обращения к БД пуст, какие -то доли секунды). Как обойти срабатывание события selectedIndexChanged или вместо него есть альтернативный вариант-событие listbox, по которому будет происходит обращение к БД.
Другая проблема: есть форма А с combobox, при загрузке формы в combobox загружается список таблиц БД, по событию textChange combobox происходит загрузка в dataset данных из таблицы и по нажатию на кнопку их отображение в datagridview. Но есть необходимость выбрать название таблицы на другой форме - В, тоже в combobox и , по нажатию на кнопку на форме В, передать значение в combobox формы А и выполнить функцию загрузки таблицы и ее отображения на форме А. Данная процедура работает с ошибкой, происходит обращение к бд для выборки данных, но название как бы нет- пустое, появляется ошибка- такой таблицы не существует, нажимаю ок на сообщении и происходит уже нормальная рекция- данные выбираются и загружаются в datagridview. То есть доли секунды combobox пуст и срабатывет событие textChange. Как обойти? Пытаюсь делать проверку, что не было нажатия на кнопку мыши (что значение в combobox изменено программно), ошибка не вылетает, срабатывает как нужно: загрузка, отображение, НО если я уже начинаю выбирать название на форме А , то функция загрузки данных из БД больше не работает...

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: событие selectedIndexChanged, textChange

Сообщение FireFenix » 27.02.2013 (Ср) 4:41

Anta писал(а):Как обойти срабатывание события selectedIndexChanged или вместо него есть альтернативный вариант-событие listbox, по которому будет происходит обращение к БД.

Вначале изменить позицию (к примеру -1 от текущего) потом удалить (+1 от текущего). Логично?

Anta писал(а):Как обойти?

Ну а подумать? Если при обращении к БД вылетает ошибка, когда значение Nothing, то почему перед запросом нельзя провериять есть ли значение в переменной и тогда делать запрос?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: событие selectedIndexChanged, textChange

Сообщение Anta » 27.02.2013 (Ср) 5:30

FireFenix писал(а):Вначале изменить позицию (к примеру -1 от текущего) потом удалить (+1 от текущего). Логично?
извините, не совсем понимаю, получить позицию текущего, выделенного элементаи поменять ее?
FireFenix писал(а):Ну а подумать? Если при обращении к БД вылетает ошибка, когда значение Nothing, то почему перед запросом нельзя провериять есть ли значение в переменной и тогда делать запрос?
Такая проверка стоит, но она срабатвает с запозданием, если значения в комбобокс передается из другой формы.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2013 (Ср) 8:16

Anta писал(а):Как обойти срабатывание события selectedIndexChanged

Обернуть всё в If Not Lst.SelectedIndex Then.

Anta писал(а):
FireFenix писал(а):Ну а подумать? Если при обращении к БД вылетает ошибка, когда значение Nothing, то почему перед запросом нельзя провериять есть ли значение в переменной и тогда делать запрос?
Такая проверка стоит, но она срабатвает с запозданием, если значения в комбобокс передается из другой формы.

А на пустую строку?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: событие selectedIndexChanged, textChange

Сообщение FireFenix » 27.02.2013 (Ср) 16:48

Anta писал(а):Такая проверка стоит, но она срабатвает с запозданием, если значения в комбобокс передается из другой формы.

ЕСли проверка стоит в запросе к БД, как она может сработывать с опозданием Изображение
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: событие selectedIndexChanged, textChange

Сообщение Anta » 28.02.2013 (Чт) 4:45

вопрос с combobox решен - ну уточнила,combobox был с dropdownlist, не хотела, чтоб пользователь вводил данные, пришлось вернуть обычный вид и запретить ввод с клавиатуры, с listbox тоже вопрос решен - изменен обработчик события на click. Спасибо.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList