Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
6 / 6 / 0
Регистрация: 22.03.2011
Сообщений: 106

ListBox: найти Item по части его содержимого

23.05.2011, 04:05. Показов 1560. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Хочу найти в ListBox айтем по части его содержимого
В листе содержится:
Саша кушал кашу
Мама мыла раму
Вася ловил рыбу

Из текстбокса получаю строку и ищу, но находится только целая строка то есть поиск рыбу - ничего не даст.
C#
1
2
3
4
5
6
7
8
9
10
            string myString = textBox1.Text;
            int index = listBox1.FindString(myString, -1);
            if (index != -1)
            {
                listBox1.SetSelected(index, true);
 
                MessageBox.Show("найдено: " + myString + " на строке " + index);
            }
            else
                MessageBox.Show("Печаль...");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2011, 04:05
Ответы с готовыми решениями:

Сделать выборку в ListBox, в зависимости от выбора Item в другом ListBox'e?
Добрый всем день! Подскажите пожалуйста, как можно сделать выборку в listbox, в зависимости от...

При выборе Item в одном ListBox'е, SelectedItem в другом ListBox, стал недоступен
А ещё скажите пожалуйста, как сделать, чтобы когда я выбирал Item в одном ListBox'е, Item в другом...

переключение item в listbox с помощью кнопок
Здравствуйте, задача стоит в том, что с помощью buttons наверх и вниз items в lostbox меняются...

14
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
23.05.2011, 04:35
Надо искать в каждом элементе списка:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            string myString = textBox1.Text;;
            bool a = false;
            for (int i = 0; i < listBox2.Items.Count; i++)
            {
                if (listBox2.Items[i].ToString().IndexOf(myString) != -1)
                {
                    listBox2.SelectedIndex = i;
                    MessageBox.Show("найдено: " + myString + " на строке " + i);
                    a = true;
                }
            }
            if(!a)MessageBox.Show("Печаль...");
1
6 / 6 / 0
Регистрация: 22.03.2011
Сообщений: 106
23.05.2011, 05:09  [ТС]
Шикарно, спасибо. А есть вариант убрать учет регистра?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
23.05.2011, 06:04
Цитата Сообщение от Ummo© Посмотреть сообщение
А есть вариант убрать учет регистра?
Один из вариантов, как это можно сделать:
C#
1
2
3
4
5
     ...
 
     if (listBox2.Items[i].ToString().ToLower().IndexOf(myString.ToLower()) != -1)
 
     ...
строку и подстроку которую ищем, переводим в нижний регистр, используя ToLower()
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 15:13
а если надо найти рыбу и раму одновремено?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 15:34
Цитата Сообщение от MZ2 Посмотреть сообщение
а если надо найти рыбу и раму одновремено?
Вот так:
C#
1
2
3
4
5
6
7
            string[] str = { "рыбу", "раму" };
            var index = new List<int>(); // список номеров найденных элементов
 
            for (int i = 0; i < listBox.Items.Count; i++)
                foreach (string s in str)
                    if (listBox.Items[i].ToString().ToLower().IndexOf(s.ToLower()) != -1)
                        index.Add(i);
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 15:55
он находить строчку:
Мама мыла раму
Вася ловил рыбу

а можно так : найти "рыбу" и получить "ловил" в MessageBox.Show()?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 16:01
Цитата Сообщение от MZ2 Посмотреть сообщение
найти "рыбу" и получить "ловил" в MessageBox.Show()
Что то я вас не понял. Найти одно, а вывести другое?
0
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 16:27
ну да почти так проста моя проблема в другом на форуме я написал но никто не ответил .....
допустим так нам не известно что в строчке мы знаем что там есть "ловил" и мне нужно получить то что написано после "ловил" то есть "рыбу" ....
я не знаю как можно этого реализовать !
вообще можно такого сделать ?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 16:48
Небольшой пример, как это можно сделать:
C#
1
2
3
4
5
6
7
8
9
10
            string str = "Мама мыла раму Вася ловил рыбу";  // ваша строка
            char separator = ' '; // разделитель слов
            string[] slova = str.Split(separator); // массив со словами
            string str2 = "мыла";
 
            for (int i = 0; i < slova.Length; i++)
            {
                if (slova[i].ToLower() == str2.ToLower()) // поиск слова
                    MessageBox.Show(slova[i + 1]); // вывод следующего слова после "мыла"
            }
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 17:25
пример работает но в моем случае вот такая строчка : #3$1{0,1};
и мне нужен знак после #3$ и мне надо знать какое число после $ и до {

Добавлено через 12 минут
и этот цифр (между $ и { ) может быть от 0 до 999999
может их ( $ и { ) заменить на пробел и потом число (цифр между $ и { ) находить ?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 17:30
По-моему проще находить положение $ и { т.е. их индексы в строке и уже потом находить то что между ними, вот так:
C#
1
2
3
4
5
6
            string str = "#3$1{0,1};";
 
            int s = str.IndexOf("$");
            int f = str.IndexOf("{");
 
            MessageBox.Show(str.Substring(s + 1, f - s - 1));
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 17:42
просто и красиво )))
но у меня там цели лист
#3$
#4$ ....... #1856$ ....
между # и $ это номер регистер мне надо найти этот и несколько других регистеров и узнать ихние значение чтоб потом их использоват в другом месте
но если иначе никак то я Очень благодарен за помощь
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 17:51
Находите значение между # и $ по такому же принципу как и между $ и { т.е. заменив $ и { на # и $, как это сделано в предыдущем сообщении.
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 18:40
Большое спасибо
в общем вышел так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                    string a = "#3$";
                    for (int i = 0; i < listBox1.Items.Count; i++)
                    {
                        if (listBox1.Items[i].ToString().IndexOf(a) != -1)
                        {
                            string str = listBox1.Items[i].ToString();
 
                            int s = str.IndexOf("$");
                            int f = str.IndexOf("{");
 
                            textBox2.Text = str.Substring(s + 1, f - s - 1);
 
                        }
                    }
это лучший ответ, нет это единственный ответ ))))
на форуме ничего подобнего не нашел (ну может я плохо искал)
Redfex, Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2011, 18:40
Помогаю со студенческими работами здесь

Выбор Item ListBox по двойному клику
Доброго времени суток, нужно сделать так чтоб некоторое событие происходил при двойном щелчке по...

При клике на Item в ListBox показать всплывающую подсказку
Здравствуйте! Подскажите пожалуйста, как реализовать всплывающую подсказку при клике на Item в...

Как при выделении нескольких item в listBox, показать несколько point на картинке
нужна помощь с контролом и отображение на нём point есть контрол который просто создаёт красную...

Как добавить слева от каждого Item в ListBox значок?
Привет всем! Как добавить слева от каждого итема значок, и желательно сделать итемы чуть-чуть...

Во время нажатии правой кнопкой мыши на listbox выбирается item
Есть listbox, в нем есть элементы. Когда нажимаем левой кнопкой на одного из них они выбираются,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru