Как сделать чтобы в combobox нельзя было писать

Обновлено: 06.07.2024

Объединяет функции ListBox и TextBox. Пользователь может ввести новое значение, как с TextBox, или пользователь может выбрать существующее значение, как с ListBox.

Примечания

Если comboBox привязан к источнику данных, comboBox вставляет значение, которое пользователь вводит или выбирает в этот источник данных. Если между несколькими столбцами имеется комбо, свойство BoundColumn определяет, какое значение хранится в связанном источнике данных.

Список в ComboBox состоит из строк данных. Каждая строка состоит из одного или нескольких столбцов с заголовками (или без них). Некоторые приложения не поддерживают заголовки столбцов, другие — поддерживают только частично.

Свойством ComboBox по умолчанию является Value. Событием ComboBox по умолчанию является Change.

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

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

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

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

Виды полей

Комбобокс со стрелкой


Поле работает по аналогии с раскрывающимся списком — при клике в поле сразу появляется список всех вариантов. Об этом подсказывает стрелка и плейсхолдер.

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

Комбобокс без стрелки


Список вариантов появляется только после ввода первого символа. Поэтому в поле нет стрелки, а плейсхолдер подсказывает, что достаточно ввести первые буквы.

Используйте это поле, если в справочнике больше 50 строк или пользователь привык заполнять подобные поля, вводя значение с клавиатуры.

Описание работы

Комбобокс со стрелкой

Состояние по умолчанию

Плейсхолдер подсказывает, что в поле можно ввести свое значение или выбрать его из списка вручную:


Фокус по пустому полю

При получении фокуса плейсхолдер становится чуть светлее, открывается список вариантов.

Когда курсор находится над списком, скроллинг страницы блокируется.


Начало ввода

При вводе первого символа список фильтруется. Первый пункт в списке подсвечивается:


Выбор пункта из списка

Выбор значения может быть сделан двумя способами — при управлении с клавиатуры и мышью.

При выборе значения мышью или клавишей Enter список закрывается, фокус остается в поле. Список будет показан снова при следующем клике в поле или изменении значения.


Фокус по заполненному полю

При получении фокуса введенное значение выделяется, раскрывается список, прокрученный до выбранного значения:


Нет совпадений

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


В этом состоянии, при нажатии на клавиатуре Enter ничего не происходит, фокус остается в поле.

Потеря фокуса без выбора пункта из списка

Если введенное значение совпадает со значением из справочника, при потере фокуса это значение выбирается:


Если ничего не найдено или список не успел загрузиться, покажите ошибку:



Комбобокс без стрелки

В целом комбобокс без стрелки работает так же как со стрелкой с некоторыми исключениями.

Список вариантов появляется только после ввода первого символа. Поэтому в поле нет стрелки, а плейсхолдер подсказывает, что достаточно ввести первые буквы:


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

При клике или получению фокуса плейсхолдер в поле становится чуть светлее.


Поиск запускается и появляется список при вводе хотя бы одного символа.


Оптимальное количество строк в списке — 5. Если после фильтрации список может быть очень большим, это число можно увеличивать до 20.

При получении фокуса полем с уже введенным значением это значение выделяется:


Поиск запускается и список появляется только после изменения значения.

Варианты использования

Составной список

Если у каждой записи справочника есть несколько параметров, показывайте в списке самые важные. По ним должен работать поиск.

Основное значение — короткое, емкое и уникальное.

Начало ввода


Выбор сделан

После выбора показывайте дополнительное значение в поле серым цветом. Если оно полностью не входит, показывайте при наведении хинт:


Фокус по заполненному полю


При получении фокуса тултип должен исчезнуть.

Поиск по вхождению

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

Чтобы понять, стоит ли использовать поиск по вхождению, задайте себе вопрос: точно ли пользователь знает начало строки? Если нет — используйте поиск по вхождению.

Подсвечивайте совпадения жирным начертанием Lab Grotesque K Bold .


Избранные варианты

Если это уместно, предлагайте пользователю наиболее вероятные варианты еще до начала ввода.

Фокус по пустому полю

Эти варианты показываются над основным списком, отделяются чертой.


Если это комбобокс в режиме автокомплита сразу по фокусу показывайте список из 3-5 вариантов с заголовком. Заголовок нужен для того, чтобы было понятно, что это не полный список:


Указание значения не из справочника

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


Автоматическое добавление значения в справочник

Нет соответствий


Фокус потерян без выбора из справочника


Добавление карточки в справочник

Если пользователь может сам наполнять справочник, и каждая запись это набор полей — добавьте в раскрывающийся список пункт для добавления новой записи в справочник. По клику на него открывается лайтбокс.

Фокус на пустом поле


Ввод первого символа


Нет совпадений


Потеря фокуса


Спиннер

Если обработка запроса для построения списка занимает дольше 0,3 секунды, показываем спиннер минимум 1 секунду. Если список уже открыт, и при получении ответа возникла задержка — показываем спиннер в поле справа, список до обновления остается в прежнем состоянии.

Нажатие Enter при пустом/не загрузившемся списке ни к чему не приводит, фокус остается в этом же поле.

Лоадер специальный, серый, не привлекающий слишком много внимания:



Размер, расположение

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

Список с подсказками всегда открывается вниз. Оптимальная высота списка 300-450 px. Чтобы список не выходил за границу страницы, проследите чтобы под ним было достаточное количество места.

Фокус и работа с клавиатурой

При клике по полю и при переходе табом поле выглядит одинаково: появляется синяя рамка, которая сохраняется до потери фокуса.

Работа с клавиатурой

Переход к следующему контролу.

Если открыт список вариантов из нескольких значений — переключение между строками. Переход между строками не цикличен — с последней строки фокус не переходит на первую, как и с первой на последнюю.

Перемещение текстового курсора в поле ввода.

Скрывает список, фокус не исчезает. Список появится вновь при вводе или удалении символа.

Выбор подсвеченного значения из списка и переход к следующему полю в форме. Если список пуст/не успел догрузиться, нажатие Enter ни к чему не приводит.

Валидация

Поле с ошибкой подсвечивается красной рамкой.

Примеры ошибок и предупреждений в комбобоксе описаны в пунктах: 28, 51, 60.

О поведении полей ввода с ошибками читайте в гайде по валидации.

Дизайн

Внешне поле ничем не отличается от обычного поля ввода. Если поле с выбором, в правой части есть стрелочка   — символ из шрифта Kontur Iconic.

Поле может быть трех размеров, как и обычное поле ввода.

Название поля выравнивается по базовой линии текста в поле:



Стиль списка подсказок совпадает с раскрывающимся списком.



Ширина списка должна быть не меньше ширины поля. Красиво, когда список шире поля ввода на 30−40 px.

Названия пунктов показывают полностью, при необходимости переносятся на несколько строк.

Элемент управления ComboBox на пользовательской форме

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

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

Свойства поля со списком

Свойство Описание
AutoSize Автоподбор размера комбинированного поля. True – размер автоматически подстраивается под длину выбранной или введенной строки. False – размер элемента управления определяется свойствами Width и Height.
AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
ColumnCount Указывает количество столбцов в раскрывающемся списке. Значение по умолчанию = 1.
ColumnHeads Добавляет строку заголовков в раскрывающийся список. True – заголовки столбцов включены, False – заголовки столбцов выключены. Значение по умолчанию = False.
ColumnWidths Ширина столбцов в раскрывающемся списке. Значения для нескольких столбцов указываются в одну строку через точку с запятой (;).
ControlSource Ссылка на ячейку для ее привязки к элементу управления ComboBox.
ControlTipText Текст всплывающей подсказки при наведении курсора на элемент управления.
Enabled Доступ пользователя к полю и раскрывающемуся списку. True – доступ разрешен, False – доступ запрещен*. Значение по умолчанию = True.
Font Шрифт, начертание и размер текста в поле.
Height Высота элемента управления ComboBox.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края комбинированного списка.
List Позволяет заполнить ComboBox данными из одномерного или двухмерного массива, а также обращаться к отдельным элементам раскрывающегося списка по индексам для записи и чтения.
ListIndex Номер выбранной пользователем строки в раскрывающемся списке. Нумерация начинается с нуля. Если ничего не выбрано, ListIndex = -1.
ListRows Количество видимых строк в раскрытом списке. Если общее количество строк больше ListRows, появляется полоса прокрутки. Значение по умолчанию = 8.
Locked Запрет на отображение раскрывающегося списка, ввод и редактирование данных в поле. True – ввод и редактирование запрещены**, False – ввод и редактирование разрешены. Значение по умолчанию = False.
MatchRequired Задает проверку вводимых в поле строк с элементами списка. True – проверка включена (допускается ввод только строк, совпадающих с элементами списка), False – проверка выключена (допускается ввод любых строк). Значение по умолчанию = False.
MaxLenght Максимальная длина строки в поле. Значение по умолчанию = 0, что означает – ограничений нет.
RowSource Источник строк для раскрывающегося списка (адрес диапазона на рабочем листе Excel).
TabIndex Целое число, определяющее позицию элемента управления в очереди на получение фокуса при табуляции. Отсчет начинается с 0.
Text Текстовое содержимое (значение) поля (=Value).
TextAlign Выравнивание текста в поле: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края комбинированного списка.
Value Текстовое содержимое (значение) поля (=Text).
Visible Видимость поля со списком. True – ComboBox отображается на пользовательской форме, False – ComboBox скрыт.
Width Ширина элемента управления.

* При Enabled в значении False пользователь не может раскрывать список, а также вводить или редактировать данные в поле.
** Для элемента управления ComboBox действие свойства Locked в значении True аналогично действию свойства Enabled в значении False.

В таблице перечислены только основные, часто используемые свойства поля со списком. Еще больше доступных свойств отображено в окне Properties элемента управления ComboBox, а все методы, события и свойства – в окне Object Browser.

Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление комбинированного списка и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления ComboBox на проекте пользовательской формы.

Способы заполнения ComboBox

Используйте метод AddItem для загрузки элементов в поле со списком по одному:

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Как добавить в ComboBox пункты. Как использовать ComboBox

ComboBox – это элемент управления Windows Forms, который представляет собой поле со списком.

Как добавить в ComboBox пункты. Как использовать ComboBox

Однако при первым знакомстве с ним не все понимают, как добавить в ComboBox пункты.

Для этого в форме программы нужно выделить ComboBox, кликнув на него левой кнопкой мыши. В верхнем правом углу появится стрелка , при нажатии на которую вылезет вот такое окошечко:

Как добавить в ComboBox пункты. Как использовать ComboBox

Далее надо нажать на “Изменить элементы…”, откроется окно:

В него мы и записываем нужные нам пункты, а затем нажимаем “ОК”.

Теперь при запуске формы мы сможем выбрать в ComboBox’e нужный нам пункт.

Кроме того можно добавлять пункты в самом коде, используя свойство comboBox1.Items.Add().

В скобках мы пишем, какой пункт мы хотим добавить.

Например, можно это делать при загрузке формы, дважды щёлкнув на форму, чтобы перейти в нужный участок кода. Там мы для примера напишем:

Запускаем программу, и вот, что мы видим:

Как добавить в ComboBox пункты. Как использовать ComboBox

Теперь к нашим имеющимся (или вместо, если не хотите возиться в форме) добавились пункты, указанные в коде.

Но как же нам теперь использовать их?

Доступ к пунктам СomboBox’a в коде можно получить, используя свойство comboBox1.SelectedIndex.

Читайте также: