Не думаю, что вы можете использовать реализацию Microsoft autocomplete , в которой нет опции для настройки ширины выпадающего меню.
Создайте фоновый поток, чтобы не мешать печатать, и подключите событие изменения текста в поле со списком или в текстовом поле, чтобы обновить список кандидатов (в режиме автозаполнения, так как вы упоминаете выпадающий список). Вы можете добавить / удалить элементы списка со списком , если у вас есть поле со списком. Но для выпадающего списка и элементов текстового поля вам нужно всплывающее окно
Легко получить всплывающее окно для показа, но вам не нужно использовать фиксированное положение, чтобы оно не исчезло с экрана, когда текстовое поле расположено близко к краю экрана. И логика фокусировки немного сложна. вам нужно сосредоточиться на текстовом поле, если пользователь не нажимает клавиши со стрелками, чтобы сделать выбор.
так
когда фокус находится на текстовом поле:
клавиши со стрелками перемещают фокус на всплывающее окно
другие ключи переходят в текстовое поле, если они не обрабатываются самим диалогом, за исключением клавиши удаления, когда мышь находится над всплывающим окном.
когда фокус на всплывающем окне:
клавиши со стрелками перемещают фокус на элемент-кандидат или текстовое поле
другие ключи переходят в текстовое поле, если не обрабатываются самим диалогом, кроме клавиши удаления
щелчки мышью:
отклонить всплывающее окно вне или всплывающее окно.
обновить значение текстового поля, если во всплывающем окне выбран элемент-кандидат
Требуется много усилий для правильной фокусировки / нарезки резьбы. Если вы можете позволить себе пространство формы, вы можете просто добавить в форму список с фиксированной шириной, например, панель указателя справки Visual Studio.