Добрый день.
Могу предположить:
В "обычном листбоксе" по умолчанию включен стандартный поиск по введёному символу.
По этому, поскольку при обработке 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>Может кто что подсказать, хотя бы в какую сторону копать.