Поиск в поле со списком при наборе текстового поля в Winforms C # - PullRequest
0 голосов
/ 29 октября 2009

У меня есть список, куда элементы загружаются из базы данных, когда пользователь вводит что-либо в текстовое поле, список должен искать начальные введенные символы и отображать его в текстовом поле.

Например:

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

Я не хочу использовать режим автозаполнения текстовых полей

Как это сделать в C #?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 08 декабря 2009
int index = listbox.FindString(textbox.Text);
if (0 <= index)
{
    listbox.SelectedIndex = index;
}

РЕДАКТИРОВАТЬ: Мех, ответил на основе заглавного вопроса, который, к сожалению, является довольно автономным, в отличие от реального вопроса. Пожалуйста, игнорируйте ...

1 голос
/ 07 ноября 2009

Сам список не поддерживает такого рода фильтрацию из коробки. Лучше всего выполнить фильтрацию самостоятельно, каждый раз, когда текстовые изменения в текстовом поле выполняются, поиск по источнику данных и подача результатов в список.

Пока ваш источник данных (элементы в базе данных в данном случае) не гигантский, вы можете обойтись без него, кэшируя все элементы и выполняя поиск в памяти. При запуске извлеките все элементы и с этого момента используйте список в памяти для поиска. В наши дни вычислительная мощность не проблема, но все зависит от вашей текущей ситуации.

Я не знаю, насколько велик ваш источник данных и какова ваша архитектура / инфраструктура, но выполнение каждого «инкрементального» поиска по базе данных, вероятно, не самый быстрый вариант. И скорость имеет решающее значение с таким фильтрующим механизмом.

Если список в памяти или обращение к базе данных каждый раз не представляется возможным / выполнимым, Lucene.NET может быть наиболее эффективным вариантом. Lucene.NET был создан для создания индексов данных и выполнения сверхбыстрого поиска по этим индексам. Недостатком является то, что вам нужно будет создать индекс ваших данных и поддерживать его в актуальном состоянии, когда ваш источник данных изменяется, плюс - это невероятно быстро. (без шуток:)

Ссылка на Lucene.NET: http://incubator.apache.org/projects/lucene.net.html

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