Awesomebar-подобное поведение с Windows Forms - PullRequest
3 голосов
/ 22 октября 2008

Я пытаюсь создать поле со списком, похожее на Awesomebar Firefox 3, со следующим поведением:

  1. Введите текст
  2. Асинхронно возвращать результаты
  3. Вверх и вниз выбирает результаты в списке, НО оставляет текст, набранный в поле ввода, чтобы пользователь мог продолжить редактирование, чтобы по-другому ограничить набор результатов
  4. Enter запускает событие, которое будет обрабатывать родительская форма

У меня есть асинхронные результаты и все работающие фильтры, но у меня нет хорошего метода для отображения и выбора в результатах.

Поле со списком автоматически заполняет поле ввода тем, что выбрано, когда вы нажимаете стрелку вниз. Ошибка № 3.

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

LookupEdit не позволяет набирать произвольные вещи. Также не работает PopupContainerEdit.

Мне нужно поведение, похожее на текстовое поле со списком под ним, и события вверх / вниз в текстовом поле передаются в список. Но если я попытаюсь создать собственный элемент управления, объединяющий эти два типа, я понятия не имею, как «плавать» в списке, как выпадающий список в обычном поле со списком.

Подсказки очень ценятся!

Ответы [ 2 ]

3 голосов
/ 22 октября 2008

Я использовал элемент управления автозаполнения из Skybound. Это бесплатно. Его можно настроить так, чтобы он мог приближаться к поведению из Awesomebar.

http://dev.skybound.ca/Products/AutoComplete/

3 голосов
/ 22 октября 2008

Возможно, вам придется использовать текстовое поле вместо поля со списком, потому что с помощью клавиш со стрелками вы выбираете значения из списка комбо и перезаписываете свое текущее значение. Используя текстовое поле, вы можете выполнить поиск в событии TextChanged и сохранить текущее набранное значение, переопределив событие KeyPress для сбора и сохранения ключей, введенных пользователем.
Ваш всплывающий список значений должен быть сам нарисован в событии рисования.

Это может показаться слишком сложным, но вам, вероятно, нужно отказаться от комбинированного элемента управления и самостоятельно реализовать некоторые из его функций.

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