Элегантный способ для этого интерфейса работать? - PullRequest
3 голосов
/ 25 января 2011

в VS .NET 4.0:

Итак, у меня есть несколько ComboBox, которые запрашивают у сервера данные, соответствующие тексту в ComboBox, когда текст ComBobox изменяется (событие).

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

Проблемы:

Быстрые запросы => Раскрывающееся меню быстрого запуска (не очень полезно)

Изменение содержимого раскрывающегося списка приводит к тому, что курсор ввода текста сбрасывается на первую позицию в поле. Набрать более 3 символов до того, как курсор переместится на первую позицию, очень сложно. - это поведение по умолчанию ComboBox, насколько я знаю

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

Что бы я хотел:

Преодоление проблемы с перемещением выпадающего курсора. (это прежде всего)

Список прокрутки с помощью клавиш со стрелками без необходимости что-либо выбирать.

Ограничение скорости, с которой запрашивается сервер.


У меня есть свои собственные решения, но на данный момент они выглядят ужасно.

Я работаю с таймингами выпадающего списка и запросов с объектами Timer, но моя реализация предотвращает выполнение запроса во время ввода текста, и выпадающий список не всегда возникает в нужный момент, если пользователь вводит слишком быстро или слишком быстро медленно.

Спасибо тем, кто пытается помочь!

1 Ответ

1 голос
/ 25 января 2011

Я не уверен, правильно ли я понимаю, что вы хотите, но лично я бы решил пропустить Combobox и использовать вместо него ListView. Возможно, скрытый, который я бы показывал только в конце запроса, а затем Textbox, который может ввести пользователь.
Такое ощущение, что вы пытаетесь использовать Combobox для чего-то, для чего он не предназначен.

...