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

ListBox

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Хочу найти в 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2011, 04:05
Ответы с готовыми решениями:

listBox
?привет! Дано a, b, c, step, в листбоксе должны появлятся все результаты... а у меня только один......

listbox
Здраствуйте! У меня есть файл, большого обьема, я считываю 1,5 млн байтов из него и помещаю...

ListBox
Как у выбранного элемента в списке вернуть id ? Генерируется список но не понимаю как вернуть id ....

ListBox
Как сделать сортировку чисел по убыванию в listbox'e?

14
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
23.05.2011, 04:35 2
Надо искать в каждом элементе списка:
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  [ТС] 3
Шикарно, спасибо. А есть вариант убрать учет регистра?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
23.05.2011, 06:04 4
Цитата Сообщение от 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 5
а если надо найти рыбу и раму одновремено?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 15:34 6
Цитата Сообщение от 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 7
он находить строчку:
Мама мыла раму
Вася ловил рыбу

а можно так : найти "рыбу" и получить "ловил" в MessageBox.Show()?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 16:01 8
Цитата Сообщение от MZ2 Посмотреть сообщение
найти "рыбу" и получить "ловил" в MessageBox.Show()
Что то я вас не понял. Найти одно, а вывести другое?
0
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 16:27 9
ну да почти так проста моя проблема в другом на форуме я написал но никто не ответил .....
допустим так нам не известно что в строчке мы знаем что там есть "ловил" и мне нужно получить то что написано после "ловил" то есть "рыбу" ....
я не знаю как можно этого реализовать !
вообще можно такого сделать ?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 16:48 10
Небольшой пример, как это можно сделать:
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 11
пример работает но в моем случае вот такая строчка : #3$1{0,1};
и мне нужен знак после #3$ и мне надо знать какое число после $ и до {

Добавлено через 12 минут
и этот цифр (между $ и { ) может быть от 0 до 999999
может их ( $ и { ) заменить на пробел и потом число (цифр между $ и { ) находить ?
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 17:30 12
По-моему проще находить положение $ и { т.е. их индексы в строке и уже потом находить то что между ними, вот так:
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 13
просто и красиво )))
но у меня там цели лист
#3$
#4$ ....... #1856$ ....
между # и $ это номер регистер мне надо найти этот и несколько других регистеров и узнать ихние значение чтоб потом их использоват в другом месте
но если иначе никак то я Очень благодарен за помощь
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
27.05.2011, 17:51 14
Находите значение между # и $ по такому же принципу как и между $ и { т.е. заменив $ и { на # и $, как это сделано в предыдущем сообщении.
1
2 / 2 / 1
Регистрация: 30.11.2010
Сообщений: 52
27.05.2011, 18:40 15
Большое спасибо
в общем вышел так
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
27.05.2011, 18:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2011, 18:40
Помогаю со студенческими работами здесь

ListBox
Добрый день ув. форумчане , вопрос следующий. OpenFileDialog openFileDialog1 = new ...

ListBox
Доброго времени суток ув. форумчане , вопрос касающийся LisBox'a Вообщем есть 2 LisBox'a , 1...

ListBox
Как лучше всего реализовать? По нажатию кнопки button2 должно выполняться следующее: если name...

ListBox автоматизация
Здравствуйте форумчане! Подскажите пожалуйста,как в listBox1 сделать так,чтобы ползунок...

listbox и texbox
Уважаемые господа программисты помогите пожалусто... Не могу решить задачу: нужно считать из txt в...

Из listBox в dataGridView
есть какой-то список в лист боксе, подскажите как загрузить выбранный Item из листбокса в первую...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru