Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229

Как получить значение из ListBox при включенной сортировке

31.05.2015, 21:37. Показов 5744. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго Всем вечера!

На форме имеется ListBox. Он заполняется данными из поля БД. В свойствах ListBox включена сортировка значений(Sorted=True). Но при выборе значения(ListBox1_SelectedIndexChanged) ListBox1.SelectedValue возвращает не выбранное значение, а совсем другое. Это связано с сортировкой, если сортировку отключить тогда все правильно.
Как получить значение из ListBox при включенной сортировке?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2015, 21:37
Ответы с готовыми решениями:

Кроп элементов ListBox'a при изменении размера контейнера с включенной виртуализацией
Уважаемые форумчане, помогите пожалуйста тупому школьнику новичку в WPF. Вот очень простой пример проблемы, с которой я сталкиваюсь. ...

Как получить значение ListBox?
Как получить значение ListBox? Пробовал, но в selectedBook не помещается ничего.. var selectedBook = (string)...

При сортировке программа сдвигает строку на одно значение вниз, как исправить?
procedure TForm2.Button10Click(Sender: TObject); type tu = record q,w,e,r,t,y,u,ip,o,p,a:string; end; var F:textfile;...

34
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
04.06.2015, 18:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vlad11 Посмотреть сообщение
как с его помощью организовать поиск в моем ListBox1.
А для этого в биндингсорсе есть замечательное свойство Filter. Очень рекомендую вкурить документацию по нему. Кроме того, сортировку я не предлагаю отключать, просто ее параметры надо задать в другом месте.
1
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
04.06.2015, 18:36  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Но сейчас уже поздно говорить - проект-то уже написан
Что там написано- еще ничего там нет - только на уровне форм для заполнения справочников, а все самое главное в другой жизни наверное будет такими темпами
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
04.06.2015, 18:37
Цитата Сообщение от Vlad11 Посмотреть сообщение
а все самое главное в другой жизни наверное будет такими темпами
Темпы увеличиваются по мере того, как осваиваешься.
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
04.06.2015, 18:38  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
А для этого в биндингсорсе есть замечательное свойство Filter. Очень рекомендую вкурить документацию по нему. Кроме того, сортировку я не предлагаю отключать, просто ее параметры надо задать в другом месте.
Спасибо! Буду пытаться Вкурить.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
04.06.2015, 18:44
Лучший ответ Сообщение было отмечено Vlad11 как решение

Решение

А чтобы не было скучно вкуривать, для начала попробуй сделать вот так.
VB.NET
1
2
3
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        TestBindingSource.Filter = String.Format("id_num LIKE '%{0}%'", TextBox1.Text)
    End Sub
И вводи в текстбокс символы, а в списке будут оставаться только строки, содержащие эту последовательность.
1
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
04.06.2015, 19:08  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
А чтобы не было скучно вкуривать, для начала попробуй сделать вот так.
Да это то что нужно!
Спасибо!

Добавлено через 11 минут
Цитата Сообщение от diadiavova Посмотреть сообщение
Кроме того, сортировку я не предлагаю отключать, просто ее параметры надо задать в другом месте.
УРЯЯЯЯЯЯЯЯЯ!!!Так все работает
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.07.2015, 16:20  [ТС]
diadiavova, Мои самые наилучшие пожелания тебе и всем форумчанам!

Вынужден еще раз вернуться к этой теме.
Вариант предложенный тобой:
VB.NET
1
2
3
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        TestBindingSource.Filter = String.Format("id_num LIKE '%{0}%'", TextBox1.Text)
    End Sub
работает но там есть нюансы-
1.когда очищаю TextBox1 - перестает работать фильтр на ListBox1
2.Не совсем удобно когда не видно всего списка, как получить такой результат:
Изображения
 
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
16.07.2015, 16:27
Цитата Сообщение от Vlad11 Посмотреть сообщение
когда очищаю TextBox1 - перестает работать фильтр на ListBox1
Ну если ты назначаешь фильтр в обработчике события изменения текста, то ясное дело, что при очищении текстового поля фильтр будет равен пустой строке. Если надо, чтобы было что-то другое, то прост пропиши условие, что если строка пустая, то фильтр будет такой-то. Какие с этим проблемы?
Цитата Сообщение от Vlad11 Посмотреть сообщение
Не совсем удобно когда не видно всего списка, как получить такой результат:
Не понял, какой именно результат. Что надо сделать: отфильтровать список или получить его полностью?
0
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
16.07.2015, 16:58  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Ну если ты назначаешь фильтр в обработчике события изменения текста, то ясное дело, что при очищении текстового поля фильтр будет равен пустой строке
нет, не так, не пустая строка а все записи там. Фильтр стоит на
Цитата Сообщение от diadiavova Посмотреть сообщение
А для этого в биндингсорсе есть замечательное свойство Filter.
если я выхожу из формы и потом открываю ее фильтр срабатывает снова
Цитата Сообщение от diadiavova Посмотреть сообщение
фильтр будет такой-то. Какие с этим проблемы?
проблема- не знаю где прописать
Цитата Сообщение от diadiavova Посмотреть сообщение
Что надо сделать: отфильтровать список или получить его полностью?
полностью он у меня есть, но чтобы при поиске в листбоксе не оставались только значения попадающие в выборку а весь список( иначе при переходе к новому значению мне надо очистить текстбокс а потом опять набрать новое значение, хотя они находятся рядом допустим 91147 и 91226)
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
16.07.2015, 17:12
Цитата Сообщение от Vlad11 Посмотреть сообщение
нет, не так, не пустая строка а все записи там.
Нет, если поле будет очищено, то фильтру присвоится именно пустая строка.
Цитата Сообщение от Vlad11 Посмотреть сообщение
Фильтр стоит на
Нет, о том, что было при инициаилизации формы ты забудь. Этот код выполняется единожды в методе ItitializeComponent, который вызывается из конструктора формы. Так что если тебе надо, чтобы это значение назначалось фильтру при очищении текстового поля, то это надо прописать отдельно.
Цитата Сообщение от Vlad11 Посмотреть сообщение
если я выхожу из формы и потом открываю ее фильтр срабатывает снова
Если ты создаешь новый экземпляр, то естественно у тебя в нем будут инициированы те значения, которые ты назначил в дизайнере формы. А вот если ты форму не закрываешь, а просто скрываешь и при повторном открытии просто показываешь тот же самый экземпляр, то все, что ты делал в ней раньше сохранится. Я правда не уверен, что ты спросил именно об этом )))
Цитата Сообщение от Vlad11 Посмотреть сообщение
проблема- не знаю где прописать
Ну условие ставишь просто.
VB.NET
1
2
3
4
5
6
7
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        If TextBox1.Text = "" Then
            ' Здесь код, который должен выполняться, если текстбокс пустой
        Else
            TestBindingSource.Filter = String.Format("id_num LIKE '%{0}%'", TextBox1.Text)
        End If
    End Sub
Добавлено через 2 минуты
Цитата Сообщение от Vlad11 Посмотреть сообщение
полностью он у меня есть, но чтобы при поиске в листбоксе не оставались только значения попадающие в выборку а весь список( иначе при переходе к новому значению мне надо очистить текстбокс а потом опять набрать новое значение, хотя они находятся рядом допустим 91147 и 91226)
Честно говоря, я не понял, что именно тебе надо. Может просто условие написать не 911, а 91 например. Да и код самого фильтра я ведь для примера показал. Там есть немало возможностей, я просто показал тебе в каком направлении копать. Там, например, поддерживаются логические операторы и емнип арифметические тоже. Так что есть где развернуться.
1
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
17.07.2015, 09:21  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Честно говоря, я не понял, что именно тебе надо
а я не могу толково объяснить
в этом варианте:
Цитата Сообщение от diadiavova Посмотреть сообщение
TestBindingSource.Filter = String.Format("id_num LIKE '%{0}%'", TextBox1.Text
если я набираю условие то у меня остаются только записи отвечающие условию
а на скриншоте пример где при наборе условия все записи остаются в листбоксе, а курсор перемещается на первую запись отвечающую условию (набрал 9 курсор переместился на запись9, добавил 0 переместился по списку на 90)
И наличие условия не мешает работать со всем списком
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
17.07.2015, 13:40
Vlad11, ну то что ты хочешь только вручную сделать можно. Обходишь элементы в цикле и когда найдешь соответствующий условию просто выдели его с помощью свойства SelectedItem. Ну или вот так вот находишь индекс
ListBox.FindString - метод (String) (System.Windows.Forms)
и используя SelectedIndex выделяешь.
Но опять-таки, я думаю, что лучше было бы условия поиска формировать так, чтобы оставалось то что нужно. Удобнее будет.
1
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
17.07.2015, 13:52  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
ну то что ты хочешь только вручную сделать можно
Придется (только чуть позже, сейчас с DataGridView играюсь)
Цитата Сообщение от diadiavova Посмотреть сообщение
я думаю, что лучше было бы условия поиска формировать так, чтобы оставалось то что нужно. Удобнее будет.
в том то и дело что не совсем удобно - список большой и не удобно постоянно поиском пользоваться (стирать значение и по новой набирать), а в том варианте что я хочу сделать намного удобней нашел нужное и дальше по списку уже без поиска, там не фильтр, а именно поиск и одно другому не мешает.
Еще раз спасибо за поддержку.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
17.07.2015, 13:55
Vlad11, тут понимаешь, можно продумать сам интерфейс ввода фильтра получше. Дело в том, что строка фильтра аналогична кляузе WHERE в SQL-запросе. То есть там можно задавать условия типа больше-меньше, находится в промежутке между, объединять условия поиска логическими операторами и так далее. Я почему говорю тебе: внимательнее вкури эту тему.
1
 Аватар для Vlad11
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
17.07.2015, 14:08  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
внимательнее вкури эту тему
уже это понял,что придется , с наскока не получается.
сейчас вкуриваю по DataGridView (там тоже заморочки). Ну не хочу я стандарт, интересен эксклюзив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2015, 14:08
Помогаю со студенческими работами здесь

Как получить значение, содержащиеся во втором столбце ListBox
ListBox имеет 2 столбца. Значение первого выбранного получаю ListBox.Value. Как получить значение второго столбца?

Как получить значение элемента ListBox, а не только его номер в списке?
При запуске Excel отрабатывает макрос, который рисует на активном листе ListBox и назначает ему макрос 'macros2'. Set myListBox1 =...

Как настроить UTM метки на dle при включенной обработки неверные URL ЧПУ?
Привет народ! Столкнулся с реальной проблемой. Как настроить UTM метки при включенной обработки неверные URL ЧПУ?? При включенной...

Получить значение из listbox
У меня есть листбокс с 2 колонками. Рапорт. 1 колонна-никнейм, 2-кол-во сообщений. Как просуммировать 2 колонку?

Ошибка в сортировке при выводе на экран, выводится только первое наименьшее значение
Создал программу, сортирующую массив,но есть ошибка в сортировке при выводе на экран, выводит только первое наименьшее значение. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru