Re: C# ListBox поиск
От: dump Россия  
Дата: 26.02.11 07:50
Оценка:
Добрый день.

Могу предположить:
В "обычном листбоксе" по умолчанию включен стандартный поиск по введёному символу.
По этому, поскольку при обработке KeyPress событие не глушится, то после отработки метода
и селекте нужного итема, вызывается стандартный поиск, который находит следуюший символ.

Здравствуйте, Felas, Вы писали:

F>Всем привет, столкнулся с проблемой небольшой.

F>Есть обычный листбокс, в нем список для примера:
F>ааб
F>абс
F>асд
F>еек
F>ееу
F>ехт
F>Так вот задача реализовать поиск по этому списку, юзверь нажимает последовательность букв (листбокс в фокусе) и ему подсвечивается первый элемент, начинающийся с этих букв.
F>Для начала реализовал следующим образом:

F>
F>        private void listBox_AllChannels_KeyPress(object sender, KeyPressEventArgs e)
F>        {
F>            timer_SearchClean.Enabled = false;

F>            Search += e.KeyChar;

F>            for (int i = 0; i < listBox_AllChannels.Items.Count; i++)
F>            {
F>                string str = listBox_AllChannels.Items[i].ToString();

F>                if (str.StartsWith(Search))
F>                {
F>                    listBox_AllChannels.ClearSelected();

F>                    listBox_AllChannels.SelectedItem = listBox_AllChannels.Items[i];

F>                    break;
F>                }
F>            }

F>            timer_SearchClean.Enabled = true;
F>        }
F>


F>Search строка, содержащая ввод юзверя, таймер ее просто очищает через некоторый интервал времени.

F>Проблема в том что после нажатия, например, кнопки Е, листбокс выделяет не первый элемент в списке, начинающийся с буквы Е, а второй, тоже самое с другими буквами, всегда выделяется второй элемент.
F>Может кто что подсказать, хотя бы в какую сторону копать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.