Почему ширина раскрывающегося списка с автоматическим предложением не соответствует ширине поля со списком?

В VB.NET для поля со списком я установил режим автозаполнения на «SuggestAppend», а источник автозаполнения на «ListItems». Он работает, как ожидалось. Но ширина раскрывающегося списка автозаполнения отличается от ширины поля со списком и поэтому выглядит странно.

Я попытался изменить свойство ширины раскрывающегося списка значений, но оно меняет значение обычного раскрывающегося списка (видно после щелчка стрелки вниз в поле со списком), а не раскрывающегося списка автозаполнения.

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

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


person vaichidrewar    schedule 06.02.2011    source источник


Ответы (1)


Присмотритесь внимательно, и вы заметите, что его ширина настраивается пользователем. Ручка изменения размера в правом нижнем углу - мертвая распродажа:

ручка изменения размера, обозначенная кружком от руки

Нет встроенной опции для указания ширины, и это сделано специально. По сути, элемент управления ComboBox фактически использует SHAutoCompleteAPI функцию для реализации эта функциональность. Поле автоматического предложения всегда отображается с последней шириной, выбранной пользователем. Он также может казаться намного больше, чем ширина поля со списком.

Если вы действительно хотели это сделать, вы могли бы создать подкласс элемента управления ComboBox, P / Invoke кучу функций из Windows API и получить дескриптор окна окна автоматического предложения, размер которого затем можно было бы изменить. Но код уродливый, и это вряд ли того стоит. Пример кода доступен на этом ветка.

person Cody Gray    schedule 06.02.2011
comment
Спасибо за ответ. Я использовал предложенный вариант захвата по размеру, но если он используется, высота также остается постоянной вместе с шириной. В обычном случае высота регулируется по количеству элементов в списке. Есть ли решение для этого? - person vaichidrewar; 06.02.2011
comment
@vai: Я не понимаю, о чем ты. Ни ширина, ни высота не настраиваются пользователем, по крайней мере, без большой работы (см. Ссылку в моем ответе). Ручка изменения размера позволяет пользователю изменять как ширину , так и высоту поля. Это точно такой же пользовательский интерфейс, который можно найти в каждом диалоговом окне «Открыть / сохранить». Пользователь либо знает, как это работает, либо ему все равно. - person Cody Gray; 06.02.2011