Awesomebar-подобное поведение с Windows Forms
-
03-07-2019 - |
Вопрос
Я пытаюсь создать поле со списком, похожее на Awesomebar Firefox 3, со следующим поведением:
<Ол>У меня есть асинхронные результаты и все работающие фильтры, но у меня нет хорошего метода для отображения и выбора в результатах.
Поле со списком автоматически заполняет поле ввода тем, что выбрано, когда вы нажимаете стрелку вниз. Ошибка № 3.
У меня есть элементы управления DevExpress, но их поле со списком делает то же самое, и я не могу понять, как их переопределить.
LookupEdit не позволяет вводить произвольные вещи. Ни один не делает PopupContainerEdit.
Мне нужно поведение, похожее на текстовое поле со списком под ним, и события вверх / вниз в текстовом поле передаются в список. Но если я попытаюсь создать собственный элемент управления, объединяющий эти два типа, я понятия не имею, как «плавать»; список, как раскрывающийся список в обычном поле со списком.
Подсказки очень ценятся!
Решение
Возможно, вам придется использовать текстовое поле вместо поля со списком, потому что с помощью клавиш со стрелками вы выбираете значения из списка комбо и перезаписываете свое текущее значение. Используя текстовое поле, вы можете выполнить поиск в событии TextChanged и сохранить текущее набранное значение, переопределив событие KeyPress для сбора и сохранения ключей, введенных пользователем.
Ваш всплывающий список значений должен быть сам нарисован в событии рисования.
Это может показаться слишком сложным, но вам, вероятно, нужно отказаться от комбинированного элемента управления и самостоятельно реализовать некоторые из его функций.
Другие советы
Я использовал элемент управления автозаполнением из Skybound. Это бесплатно. Его можно настроить так, чтобы он мог приближаться к поведению из Awesomebar.