Перейти к содержимому

Как строится поле с раскрывающимся списком combobox

  • автор:

Создание поля с раскрывающимся списком ComboBox

Как правило поле со списком открывается в подчиненной таблице (на стороне связи М), а в списке отображаются данные из общего атрибута из основной таблицы находящейся на стороне связи типа 1.

Выбираем правой кнопкой поле, которое мы сделаем полем со списком.

Открывается список, в котором выбираем:

Преобразовать элемент вÆПоле со списком Открываем свойства этого поля.

В открывшемся меню выбираем Источник строк, куда вводим оператор

Если, например, мы хотим, чтобы в поле Deptid таблицы Employee открывался список номеров отделов таблицы Department, то оператор будет:

Select deptid from department

В некоторых случаях можно добавить и условие отбора:

В гостинице показать только свободные номера:

Select roomNumber from roomtable where room = free Оператор отберет те строки, которые появятся в ComboBox

Специальные объекты в форме

Формы могут также содержать графику, гиперссылки на Web-страницы и документы, объекты OLE (объекты, связанные с другими приложениями Windows) и другие специальные объекты.

Позже вы сможете выполнить несколько упражнений по созданию учебных форм и их элегантному оформлению в окне конструктора форм (Form Design).

Предполагается существование в таблице поля со свойствами объекта

Чтобы ввести в таблицу изображение необходимо щелкнуть правой кнопкой на этом поле, в раскрывающемся списке выбрать «Вставить объект», откроется окно:

Выби раем ÆСоздать из файла ÆОбзор и выбираем фотографию Флажок Связь позволяет либо вставить объект в таблицу базы данных,

либо установить с ним связь. При этом объект останется вне базы данных и может изменяться независимо.

Добавление в форму дополнительных элементов

Для вставки дополнительных элементов существует панель элементов в Конструкторе форм:

В ней можно выбрать элемент для вставки. Это может быть поле с текстом(TextBox), переключатель, кнопка. Вставляем кнопку:

Для этого в режиме конструктора открываем форму. В открытом окне выбираем, какая операция при нажатии кнопки будет выполняться. Например, приложение. После нажатия кнопки Далее:

Выбираем рисунок и название кнопки:

Добавление на форму дополнительных элементов позволяет создать различные операции.

Варианты заданий

1. Создайте формы для всех таблиц вариантов первой лабораторной работы. В формах для таблиц на стороне связи М создать поля типа ComboBox. База данных состоит из 4 таблиц:

Кодификатор особых случаев эксплуатации (Код особого случая, Название особого случая), Самолет (Номер_борта, Тип_ВС, модификация, год_выпуска, Владелец, Место базирования, Изображение самолета), Инцидент (Номер_борта, Код_особого_случая, Дата_инцидента, Код_оператора, Дата_ввода_записи), Операторы (Фамилия, Код_оператора, Должность).

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

2. Разработать проект базы данных: База данных состоит из 4 таблиц: Ремонтный завод (Номер_завода, Название, Адрес), Ремонт

(Номер_завода, намер_борта, номер_ремонта, Дата_начала_ремонта, Дата_окончания, Код_оператора, Дата_ввода_записи), Самолет (Номер_борта, Тип_вс, модификация, год_выпуска, Владелец, Место базирования, Изображение самолета), Операторы (Фамилия, Код_оператора, Должность).

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

3. Разработать проект базы данных: База данных состоит из 4 таблиц: Отдел_универмага (Номер_отдела, Название, Руководитель_отдела, Этаж),

Продавец (Фамилия, Имя, Номер_продавца), Номер_отдела, Стаж), Товар

(Номер_товара, Наименование, Цена, Тип, Изображение товара), Продажи (Номер_товара, Номер_продавца, Дата_продажи).

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

4. Разработать проект базы данных: База данных состоит из 4 таблиц:

Портрет_заведующего), Преподаватель (Номер_преподавателя, Фамилия, Портрет преподавателя, Номер_кафедры), Дисциплины (Номер_дисциплины, Название, Семестр, Количество_часов), Расписание (Номер_преподавателя, Номер_дисциплины, Аудитория, Время, Группа)

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

5. Разработать проект базы данных: База данных состоит из 4 таблиц: Работник Автосервиса (Номер_ремонтника, Фамилия, Специальность),

Автомобиль на ремонте (Номер_авто, Вид_ремонта, Дата_приема_на_ремонт, Дата_окончания, Код_запчасти, Стоимость_работы, Код_оператора), Запчасти (Код_запчасти, Стоимость_запчасти, Название, Изображение_запчасти), Оператор (Код_оператора, Фамилия_оператора)

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

6. Разработать проект базы данных: База данных состоит из 4 таблиц: Кодификатор Зон контроля (Код_элемента, Название_элемента,

Обозначение), Самолет (Номер_борта, Тип_вс, Модификация, Год_выпуска, Владелец), Дефекты (Код_элемента, Название элемента, Номер_борта, Изображение дефекта, Дата_осмотра, Код_оператора), Оператор (Код_оператора, Фамилия_оператора).

Определите индексы таблиц, соедините таблицы в соответствии с индексами. Введите 12-14 записей в таблицы.

Отчет

Отчет по лабораторной работе должен содержать:

Краткое описание выполненной работы.

Окна Конструкторов, использованных в работе. Формы для всех таблиц с описанием полей. Работу форм с использованием ComboBox

Контрольные вопросы

Какова последовательность проектирования формы для таблицы?

Как строится поле с раскрывающимся списком ComboBox?

Как ввести изображение используя поля формы?

Лабораторная работа № 3

Конструирование запросов

Цель лабораторной работы:

1. Подготовка отчетов с помощью Конструктора запросов MS

2.,Знакомство с языком SQL.

3. Построение запросов на языке SQL.

4. Подготовка отчета по результатам лабораторной работы

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

Какие сотрудники были приняты на работу за последние три месяца? Каково количество новых заказчиков, к которым я обращался на последней неделе?

Каковы показатели по средне зарплате по отделам

Запрос на выборку

Продемонстрируем довольно простой запрос: с помощью него мы находим все записи в таблице Отделы для Ивана Петрова. Такой тип запроса называется запросом на выборку (select query). Он предназначен для поиска записей,удовлетворяющих сформулированными вами условиям отбора записей.

Позже мы более подробно остановимся на функциях запросов на выборку и рассмотрим несколько конкретных примеров работы в окне конструктора запросов (Query Design).

Другие типы запросов

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

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

прошлого года. При создании запросов этого типа можно воспользоваться Мастером перекрестных запросов (Crosstab Wizard).

Запрос на создание таблицы. Когда вы превращаете запрос на выборку взапрос на создание таблицы, то записи, полученные в результате выполнения запроса, помещаются в новую таблицу.

Запрос на обновление. С помощью запросов этого типа можно внестиизменения в группу записей таблицы (например, в некотором поле изменить все прописные символы на строчные), а также выполнить редактирование данных, или внести изменения в одну таблицу, используя данные из другой.

Запрос на добавление. Запросы этого типа позволяют добавлять данные изодной таблицы в другую.

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

Основы языка SQL

Язык SQL – язык высокого уровня для создания запросов в реляционной базе данных.

Основной оператор языка SQL это — SELECT: SELECT [ALL | DISTINCT] список полей данных FROM список таблиц

[WHERE условие поиска]

[GROUP BY имя_столбца [, имя_столбца]…] [HAVING условие поиска]

[ORDER BY критерий упорядочивания].

Обязательными в запросе на SQL являются фразы SELECT и FROM, остальные могут использоваться для более подробных запросов. Во фразе WHERE указывается условие отбора записей из таблиц, имена которых указаны

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

Запрос на языке SQL можно набрать в командном окне либо создать запрос с помощью Конструктора запросов.

Удобное средство – использование оператора SQL для соединения двух таблиц. Например, соединить две таблицы из первой лабораторной работы Сотрудники (Employees) и Отдел (Department) по общему атрибуту

Select * from Department, Employees where Department.depnum = Employees.depmum

Такой же запрос:

Select * from Employees join Department on Department. depnum = Employees. Depnum

Возможны вложенные запросы:

Select lastname from Employees, where depnum in (select depnum from Department where depnum = d101 or depnum = d102)

Существуют операторы вставки (insert), обновления (update) и удаления (delete) данных в/из таблиц.

Оператор insert вставляет строку в таблицу:

Insert into bookauth values (1234, 344) в таблицу Bookauth вставляются значения в порядке следования атрибутов в таблице.

Insert into author (author_id, first_name, last_name)

values (125, ‘Anton’, ‘Antonov’)

в таблицу будут вставлены значения для перечисленных полей, если остальные поля помечены как NULL – необязательны для заполнения.

Оператор Update изменяет одну или несколько строк таблицы:

Update bookauth set author_id = 567 where book_id =

оператор меняет значение поля author_id для всех значений поля book_id равных 111.

Оператор Delete удаляет строки таблицы по заданному условию:

Delete from authors where city = London

Создание запроса

Для создания запроса используется Конструктор запросов.

Из главного меню:

Главное меню Æ Создание Æ Конструктор запросов Открывается окно Конструктора, в котором предлагается выбрать

таблицы для создания запроса:

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

Конструируем запрос «Вывод сотрудников отдела, начальник которого Шифрин» в конструкторе запросов: Выбираем поля из раскрывающегося списка: manager, lastname, birthdate. В поле Условие отбора задаем значение ‘Shifrin’

Если условие составное, например,

Manager = ‘Shifrin’ AND birthdate = ’02.02.1980’, то условие набирается в строке «Условие отбора».

Если условие типа «ИЛИ», то условие набирается в строках «Условие отбора» и строке «ИЛИ»

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

Запрос с параметром.

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

В строку «Условие отбора» в квадратных скобках вводится текст, который появится в окошке. В нашем случае [number].

При выполнении запроса открывается окошко, в которое вводится искомое значение параметра:

При вводе в поле «number» значения номера отдела, например, 101 результат выполнения запроса будет выглядеть примерно так:

Запрос на добавление

Эквивалент запроса на добавление на языке SQL можно получить нажав правой кнопкой мыши на поле запроса:

Как строится поле с раскрывающимся списком combobox

Как сделать переход по записям формы с помощью поля со списком в Access? Есть форма, в ней отображаются записи таблицы с полями id, name. Нужно чтобы можно было перемещаться по записям формы путем выбора из выпадающего списка одного из значений поля name.

Вот я создаю форму, на ней оказывается два поля id и name. Далее я преобразовываю name в выпадающий список, указываю в качестве data запрос select name from table. Все отображается в списке, можно выбирать. Но не происходит смена записи. Иду другим путем — кидаю на форму новый комбо-бокс, там в мастере указываю что значение его будет использовано для перехода по записям формы. Все ввожу как надо, открываю форму, комбобокс содержит нужные значения поля name, но блин, не разрешает себя изменять, потому что автоматом к нему добавляется поле id (скрытое), а т.к. оно ключевое, аксесс не разрешает его изменять.

Сообщ. #2 , 03.04.07, 08:17

Рейтинг (т): 352
В событие «после обновления» ,поля со списком .
Private Sub Klient_AfterUpdate()
Dim strcrit As String
strcrit = «[NMK] = ‘» & Me![Klient] & «‘»
If Nz(Me![Klient], «») <> «» Then
Me.RecordsetClone.FindFirst strcrit
Me.Bookmark = Me.RecordsetClone.Bookmark
Сообщ. #3 , 03.04.07, 14:16
Рейтинг (т): 42

Bas, не получилось — результат тот же. А разве с помощью гуи-средств нельзя это сделать? Ведь все сделано в акцессе так чтобы и секретарша могла базы делать, все автоматом добавляется, все само понимает куда чего дописать.

Добавлено 03.04.07, 14:22
Кроме того, когда кидаешь на форму комбобокс, появляется мастер, и если выбрать вариант поиск записи в форме на основе значения, которое содержит поле со списком он же сразу создается с такой процедурой как ты указал

Private Sub ПолеСоСписком11_AfterUpdate()
‘ Поиск записи, соответствующей этому элементу управления.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst «[Dish_Id] = » & Str(Nz(Me![ПолеСоСписком11], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark

Добавлено 03.04.07, 14:27
Кроме того, после попытки добавления на форму комбобокса, базу начинает страшно плющить — постоянно по десять раз при каждом действии вызывающем сохранение формы появляется сообщение «Введенное в поле своства или макросва формы содержит ошибки или указывает на несуществующую форму«

Добавлено 03.04.07, 14:30
В общем я понял что это не мой тупизм, а какие то ошибки с СУБД. Потому что в справке все указано так, как я и делаю, только ничего не выходит, а появляются ошибки которые я указал выше.

Поиск записи по выбранному в списке значению
Показать все
Скрыть все
В форме можно создать список Список. Элемент управления, позволяющий выполнять выбор из списка значений. Элемент «список» состоит из списка и необязательной надписи.) или поле со списком (Поле со списком. Элемент управления в форме, являющийся комбинацией поля и раскрывающегося списка. Пользователь может ввести значение в поле или раскрыть список и выбрать значение из списка.) для поиска записи по значению из списка.

Откройте форму в режиме конструктора (Режим конструктора. Окно, в котором отображается макет следующих объектов базы данных: таблицы, запросы, формы, отчеты, макросы и страницы доступа к данным. В режиме конструктора пользователь создает новые объекты базы данных или изменяет макеты существующих.).
Нажмите кнопку Мастера на панели элементов (Панель элементов. Набор инструментов для создания элементов управления в форме, отчете или на странице доступа к данным в режиме конструктора. Набор инструментов для страницы доступа к данным в режиме конструктора отличается от набора инструментов для формы и отчета в режиме конструктора.), если эта кнопка еще не нажата.
На панели элементов нажмите кнопку Список или Поле со списком .
Щелкните в форме место, в которое нужно поместить список или поле со списком.
В первом диалоговом окне мастера выберите параметр для поиска записи по значению, выбранному в списке или поле со списком.
Выполняйте инструкции, выводящиеся в диалоговых окна мастера. В последнем диалоговом окне нажмите кнопку Готово для вывода списка или поля со списком в режиме конструктора.
Для просмотра процедуры обработки события (Процедура обработки события. Процедура, автоматически выполняемая в ответ на событие, возникающее в результате действий пользователя, выполнения программы или генерируемое системой.), обеспечивающей работу списка или поля со списком, откройте окно свойств элемента управления и нажмите кнопку Построить рядом с ячейкой свойства После обновления (AfterUpdate).

Добавление списка или поля со списком

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

В этой статье

  • Типы списков
  • Создание списка или поля со списком с помощью мастера
  • Создание списка или поля со списком путем добавления поля подстановок в форму
  • Создание списка или поля со списком без использования мастера
  • Настройка списка или поля со списком

Типы списков

Программой Access предусмотрены два типа элементов управления «Список»: список и поле со списком.

Список. Данный элемент управления отображает список значений или вариантов. Список содержит строки данных и обычно имеет такой размер, чтобы всегда были видны несколько строк. Строки могут содержать один или несколько столбцов с заголовками или без них. Если список содержит больше строк, чем может быть отображено в элементе управления, появится полоса прокрутки. Выбор ограничен вариантами, представленными в списке; ввести значение в список невозможно.

Поле со списком. Данный элемент управления является более компактным способом отображения списка вариантов: список скрыт до тех пор, пока пользователь не нажмет кнопку раскрытия списка. Кроме того, поле со списком позволяет вводить значения, не содержащиеся в списке. Таким образом, этот элемент управления объединяет в себе функции текстового поля и списка.

1. Нажмите стрелку, чтобы отобразить раскрывающийся список.

2. Выберите необходимый вариант из раскрывающегося списка.

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

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

  1. В области навигации щелкните форму правой кнопкой мыши и выберите команду Конструктор.

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

  • В зависимости от сделанного выбора запустится мастер списков или мастер полей со списком.
  • Чтобы использовать текущие данные из источника записей, выберите вариант Объект «список» будет использовать значения из таблицы или запроса.
  • Чтобы использовать фиксированный (редко изменяемый) список значений, выберите вариант Будет введен фиксированный набор значений.
  • Чтобы использовать элемент управления для выполнения поиска, а не как инструмент для ввода данных, выберите вариант Поиск записи в форме на основе значения, выбранного в списке или поле со списком. Будет создан свободный элемент управления с внедренным макросом, выполняющим поиск по значению, вводимому пользователем.
  • Чтобы создать свободный элемент управления, выберите параметр Запомнить значение. Это означает, что программа сохранит выбранное значение, пока пользователь не изменит его или не закроет форму, но при этом значение не будет внесено в таблицу.
  • Чтобы создать связанный элемент управления, выберите параметр Сохранить в поле и укажите поле, к которому должен быть присоединен элемент управления.

Создание списка или поля со списком путем добавления поля подстановок в форму

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

  1. Создайте в таблице поле подстановок. Можно создать поле подстановок, одновременно допускающее несколько значений или содержащее только одно значение. Дополнительные сведения о создании многозначных полей подстановки см. в статье Создание и удаление многозначного поля.
  2. Выполните одно из указанных ниже действий.
  3. Создайте форму, основанную на источнике записей, который содержит поле подстановок. Например, в области переходов выберите таблицу или запрос, содержащие поле подстановок, а затем на вкладке Создание в группе Формы нажмите кнопку Форма. Программа Access автоматически создаст поле со списком для поля подстановок.
  4. Добавьте в форму список или поле со списком.
    1. В режиме конструктора откройте форму, основанную на источнике записей, который содержит поле подстановок.
    2. Если область Список полей не отображается, нажмите клавиши ALT+F8, чтобы открыть ее.
    3. Дважды нажмите поле подстановок или перетащите его из области Список полей в форму. Программа Access автоматически создаст поле со списком, связанное с этим полем.

    Совет: Чтобы заменить поле со списком на список (или наоборот), щелкните правой кнопкой мыши элемент управления, выделите в контекстном меню пункт Преобразовать элемент в и выберите нужный тип элемента управления.

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

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

    1. Откройте форму в режиме конструктора.
    2. На вкладке Конструктор форм в группе Элементы управления убедитесь, что параметр Использовать мастеры управления не выбран.
    3. Щелкните средство » Список « или поле со списком .
    4. Чтобы создать элемент управления стандартного размера, нажмите любое место в форме. Чтобы создать элемент управления необходимого размера, перетащите указатель с нажатой кнопкой мыши.
    5. Чтобы открыть станицу свойств элемента управления, при выделенном элементе управления нажмите клавишу F4.
    6. Задайте значения для свойств Тип источника строк и Источник строк, руководствуясь данными следующей таблицы.

    Задача Значение свойства «Тип источника строк». Задайте следующее значение свойства «Источник строк»:
    Показать значения из таблицы или запроса либо результатов инструкции SQL Таблица/запрос В раскрывающемся списке выберите таблицу или запрос, содержащие значения, которые нужно отобразить в списке или поле со списком. или Введите инструкцию SQL. или На вкладке Данные на странице свойств щелкните , чтобы открыть построитель запросов. Дополнительные сведения о создании запросов см. в статье Создание простого запроса на выборку.
    Показать фиксированный список значений Список значений Введите список фиксированных значений, разделенных точкой с запятой (;). Например, Север; Южной; Востоке; Запад или На вкладке Данные на странице свойств щелкните , чтобы открыть диалоговое окно Изменение элементов списка , а затем введите элементы в отдельных строках.
    Показать список полей из таблицы или запроса Список полей В раскрывающемся списке выберите таблицу или запрос, содержащие имена полей, которые нужно отобразить в списке или поле со списком.

    Настройка списка или поля со списком

    В форме, открытой в режиме конструктора, выделите список или поле со списком и нажмите клавишу F4, чтобы открыть страницу свойств элемента управления. Затем выполните одно из указанных ниже действий.

    • Изменение порядка сортировки в списке или в поле со списком. Если для создания списка или поля со списком использовался мастер, программа Access автоматически сортирует строки, составляющие список, по первому видимому столбцу. Если требуется задать другой порядок сортировки или если в свойстве Источник строк элемента управления был выбран сохраненный запрос, используйте следующую процедуру.
      • Перейдите на вкладку Данные и нажмите поле свойства Источник строк.
      • На вкладке Данные на странице свойств щелкните , чтобы открыть построитель запросов.
      • В строке Сортировка для столбца, данные в котором нужно отсортировать, укажите требуемый порядок сортировки.

      Примечание: Если список не раскрыт, в поле со списком отображается первый видимый столбец списка. Например, в предыдущем примере будет отображаться столбец «ИмяПоставщика», поскольку столбец «КодПоставщика» скрыт. Если бы он не был скрытым, в поле отображались бы значения из этого столбца, а не столбца «ИмяПоставщика».

      • Чтобы отобразить заголовки столбцов, задайте для свойства Заголовки столбцов значение Да. В полях со списком заголовки списка отображаются только при его раскрытии. Если поле со списком или список созданы на основе источника записей, программа Access будет использовать имена полей этого источника записей в качестве заголовков столбцов. Если поле со списком или список созданы на основе списка фиксированных значений, то в качестве заголовков столбцов программа Access будет использовать первые n элементов списка значений (заданных в свойстве Источник строк), где n равно значению свойства Число столбцов.
      • В поле свойства Автоподстановка задайте значение Нет. В этом случае нужно будет выбирать значение из списка или вводить его целиком.
      • Введите в поле свойства Ширина списка значение ширины в текущих единицах измерения (заданных в панели управления Windows). Чтобы использовать единицы измерения, отличные от принятых по умолчанию, введите обозначение единиц измерения. Например, введите значение 2 см. Убедитесь, что оставлено достаточно места для полосы прокрутки. Список поля со списком может быть шире его текстового поля, но не может быть более узким. Значение по умолчанию (Авто) обеспечивает одинаковую ширину текстового поля и списка.
      • Введите число в поле свойства Число строк списка. Если фактическое количество строк списка превышает значение, указанное в свойстве Число строк списка, при раскрытии списка отображается вертикальная полоса прокрутки.
      • Если первый столбец, отображаемый в поле со списком, не является присоединенным, нельзя вводить в поле значения, отсутствующие в списке, даже если для свойства Ограничиться списком задано значение Нет.
      • Если для свойства Ограничиться списком задано значение Нет, то при вводе в присоединенное поле со списком значения, которого нет в списке, это значение заносится в базовое поле, но не добавляется в список. Чтобы добавить в список элементы, используйте свойство Отсутствие в списке и событие Нет в списке.

      Поле со списком и список

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

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

      Изображение раскрывающегося списка в компактном состоянии.

      Выбор правильного элемента управления

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

      Примеры

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

      Снимок экрана: раскрывающийся список в компактном состоянии.

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

      Пример раскрывающегося списка с длинной текстовой строкой

      Если коллекция в поле со списком достаточно длинная, появляется полоса прокрутки. Логически группируйте элементы в списке.

      Пример полосы прокрутки в раскрывающемся списке

      Рекомендации

      • Ограничьте текстовое содержимое элементов полей со списком одной строкой.
      • Сортируйте элементы в поле со списком в логическом порядке. Группируйте связанные параметры и размещайте часто используемые параметры в начале списка. Названия сортируйте в алфавитном порядке, числа — по возрастанию, даты — по хронологии.

      Окна со списками

      Окно со списком позволяет пользователю выбрать один или несколько элементов коллекции. Окна со списками аналогичны раскрывающимся спискам за исключением того, что они всегда открыты — у окна со списком нет компактного (не развернутого) состояния. Элементы списка можно прокручивать, если для отображения списка полностью не хватает места.

      Является ли список правильным элементом управления?

      • Окно со списком может быть полезно, если элементы списка достаточно важны и экранного пространства достаточно для отображения всего списка.
      • При важном выборе список должен привлечь внимание пользователя к полному списку вариантов. И наоборот, раскрывающийся список изначально привлекает внимание пользователя к выбранному элементу.
      • Не используйте список в следующих случаях.
        • Список содержит очень малое число элементов. Список с возможностью выбора одного варианта, в котором содержится два пункта, лучше представить в виде переключателей. Также подумайте о возможности использования переключателей, если в списке 3 или 4 статических элемента.
        • Список выбран один раз, и в нем всегда есть те же 2 параметра, где один может быть подразумеваться как не другой, например «вкл» и «выкл». Используйте один проверка прямоугольник или переключатель.
        • Очень большое число элементов. Для длинных списков оптимальным решением является представление сетки и представление списка. Для очень длинных списков сгруппированных данных лучше использовать контекстное масштабирование.
        • Список представляет собой непрерывные числовые значения. В этом случае попробуйте использовать ползунок.
        • Элементы выбора не имеют большого значения для работы приложения, или же рекомендуется использовать вариант по умолчанию для большинства пользователей и ситуаций. Вместо списка используйте раскрывающийся список.

        Рекомендации по спискам

        • Идеальное количество элементов в окне со списком — от 3 до 9.
        • Также окно со списком хорошо подходит, если элементы списка могут динамически изменяться.
        • По возможности настройте размер окна со списком таким образом, чтобы список элементов не нужно было сдвигать или прокручивать.
        • Убедитесь, что цель окна со списком, а также выбранные в данный момент элементы понятны.
        • Предусмотрите визуальные эффекты и анимации для реакции на касание и состояние выбора элементов.
        • Ограничьте текстовое содержимое элементов списка одной строкой. Если элементы списка — это визуальные элементы, можно настроить их размер. Если элемент содержит несколько строк текста или изображений, используйте представление сетки или представление списка.
        • Используйте шрифт по умолчанию, если руководство по использованию корпоративного стиля не требует использования другого шрифта.
        • Не используйте окно с списком для выполнения команд или динамического скрытия либо отображения других элементов управления.

        UWP и WinUI 2

        Сведения и примеры в этой статье оптимизированы для приложений, использующих Windows App SDK и WinUI 3, но обычно применимы к приложениям UWP, использующим WinUI 2. Сведения и примеры для конкретной платформы см. в справочнике по API UWP.

        В этом разделе содержатся сведения, необходимые для использования элемента управления в приложении UWP или WinUI 2.

        API для этого элемента управления существуют в пространстве имен Windows.UI.Xaml.Controls .

        • API UWP:класс ComboBox, свойство IsEditable, свойство Text, событие TextSubmitted, класс ListBox
        • Откройте приложение коллекции WinUI 2 и просмотрите ComboBox в действии. Приложения из коллекции WinUI 2 включают интерактивные примеры большинства элементов управления, возможностей и функций WinUI 2. Получите приложение из Microsoft Store или получите исходный код в GitHub.

        Библиотека пользовательского интерфейса Windows 2.2 или более поздней версии содержит новый шаблон для этого элемента управления, использующий скругленные углы. Дополнительные сведения см. в разделе о радиусе угла.

        Создание поля со списком

        • Важные API: класс ComboBox, свойство IsEditable, свойство Text, событие TextSubmitted, класс ListBox

        Приложение «Коллекция WinUI 3» содержит интерактивные примеры большинства элементов управления, функций и функций WinUI 3. Получение приложения из Microsoft Store или исходный код на сайте GitHub

        Для заполнения полей со списком нужно напрямую добавить объекты в коллекцию элементов или привязать свойство ItemsSource к источнику данных. Добавляемые в ComboBox элементы помещаются в контейнеры ComboBoxItem.

        Здесь представлено простое поле со списком с добавленными элементами в формате XAML.

         Blue Green Red Yellow  

        В следующем примере демонстрируется привязка поля со списком к коллекции объектов FontFamily.

        " DisplayMemberPath="Source"/> 
        ObservableCollection fonts = new ObservableCollection() < fonts.Add(new FontFamily("Arial")); fonts.Add(new FontFamily("Courier New")); fonts.Add(new FontFamily("Times New Roman")); >; 

        Выбор элементов

        Подобно ListView и GridView, элемент ComboBox является производным от элемента выбора Selector, поэтому выбор пользователя можно получить стандартным образом.

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

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

        В случае задания свойства SelectedItem или SelectedIndex для указания выбора по умолчанию возникает исключение, если свойство задано до заполнения коллекции элементов для поля со списком. Если вы не определяете элементы в коде XAML, лучше всего обработать событие Loaded поля со списком и задать параметр SelectedItem или SelectedIndex в обработчике событий Loaded.

        Вы можете осуществить привязку к этим свойствам в XAML или обрабатывать событие SelectionChanged для реагирования на изменения выбора.

        В коде обработчика событий выбранный элемент можно получить из свойства SelectionChangedEventArgs.AddedItems. Ранее выбранный элемент (при наличии) можно получить из свойства SelectionChangedEventArgs.RemovedItems. Каждая из коллекций AddedItems и RemovedItems содержит только один элемент, так как поле со списком не поддерживает выбор нескольких элементов.

        В этом примере показано, как обрабатывать событие SelectionChanged, а также как выполнить привязку к выбранному элементу.

          Blue Green Red Yellow  "/> "/> 
        private void ColorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < string colorName = e.AddedItems[0].ToString(); Color color; switch (colorName) < case "Yellow": color = Colors.Yellow; break; case "Green": color = Colors.Green; break; case "Blue": color = Colors.Blue; break; case "Red": color = Colors.Red; break; >colorRectangle.Fill = new SolidColorBrush(color); > 
        Событие SelectionChanged и навигация с помощью клавиатуры

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

        Чтобы создать поле со списком, которое обновляется в режиме реального времени, пока пользователь использует клавиши со стрелками (например, раскрывающийся список выбора шрифтов), задайте для свойства SelectionChangedTrigger значение Always. В результате событие SelectionChanged возникает при переходе фокуса на другой элемент в открытом списке.

        Изменение алгоритма поведения выбранного элемента

        В Windows 10, версия 1809 (пакет SDK 17763) или более поздняя, алгоритм поведения выбранных элементов обновлен — теперь они поддерживают редактируемые поля со списком.

        В более ранних версиях пакета SDK, чем 17763, значение свойства SelectedItem (и, следовательно, свойств SelectedValue и SelectedIndex) должно было находиться в коллекции элементов поля со списком. В предыдущем примере установка colorComboBox.SelectedItem = «Pink» приводит к таким выходным данным:

        • SelectedItem = null.
        • SelectedValue = null.
        • SelectedIndex = -1.

        В пакете SDK версии 17763 и более поздних значение свойства SelectedItem (и, следовательно, свойств SelectedValue и SelectedIndex) не должно находиться в коллекции элементов поля со списком. В предыдущем примере установка colorComboBox.SelectedItem = «Pink» приводит к таким выходным данным:

        • SelectedItem =Pink.
        • SelectedValue = Pink.
        • SelectedIndex = -1.

        Поиск по тексту

        Поля со списком автоматически поддерживают поиск в их коллекциях. По мере того, как пользователь вводит символы на физической клавиатуре, выбрав открытое или закрытое поле со списком, отображаются варианты, подходящие под строку пользователя. Эта функция особенно полезна при навигации по длинному списку. Например, при взаимодействии с раскрывающимся списком, который содержит список штатов, пользователь может нажать клавишу W, чтобы представить «Washington» для быстрого выбора. Текстовый поиск не чувствителен к регистру.

        Чтобы отключить эту функцию, можно задать для свойства IsTextSearchEnabled значение false.

        Создание редактируемого поля со списком

        Для этой функции требуется Windows 10, версия 1809 (пакет SDK 17763) или более поздняя.

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

        Чтобы создать редактируемое поле со списком, задайте для свойства IsEditable значение true. Затем обработайте событие TextSubmitted для работы со значением, которое ввел пользователь.

        По умолчанию значение SelectedItem обновляется, когда пользователь фиксирует введенный текст. Это поведение можно переопределить, задав для свойства Handled значение true в аргументе события TextSubmitted. Если событие отмечено как обработанное, в поле со списком не будут предприниматься дополнительные действия после завершения события и поле будет оставаться редактируемым. Значение SelectedItem не будет обновляться.

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

        Элемент выбора «недавно использованные имена» позволяет вводить пользовательские строки. Список RecentlyUsedNames содержит некоторые значения, из которых можно выбирать, но пользователь также может добавлять новые пользовательские значения. Свойство CurrentName представляет имя, введенное в настоящий момент.

        " SelectedItem=""/> 

        Событие TextSubmitted

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

        Событие TextSubmitted возникает при выполнении следующих условий:

        • Для свойства IsEditable установлено значение true.
        • Пользователь вводит текст, который не соответствует текущей записи в поле со списком.
        • Пользователь нажимает клавишу ВВОД или перемещает фокус с поля со списком.

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

        Пример. Проверка входных данных и локальное использование

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

        Когда пользователь добавляет значение, которое отсутствует в списке, размер шрифта обновляется, однако значение не заносится в этот список.

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

        " TextSubmitted="FontSizeComboBox_TextSubmitted"/> 
        private void FontSizeComboBox_TextSubmitted(ComboBox sender, ComboBoxTextSubmittedEventArgs e) < if (byte.TryParse(e.Text, out double newValue)) < // Update the app's font size. _fontSize = newValue; >else < // If the item is invalid, reject it and revert the text. // Mark the event as handled so the framework doesn't update the selected item. sender.Text = sender.SelectedValue.ToString(); e.Handled = true; >> 

        Пример. Проверка входных данных и добавление значений в список

        В этом примере средство выбора избранного цвета содержит наиболее распространенные избранные цвета (красный, синий, зеленый, оранжевый). Однако пользователь также может ввести собственный избранный цвет, который не включен в список. Когда пользователь добавляет допустимый цвет (например, розовый), этот цвет добавляется в список и устанавливается как активный избранный цвет.

        " TextSubmitted="FavoriteColorComboBox_TextSubmitted"/> 
        private void FavoriteColorComboBox_TextSubmitted(ComboBox sender, ComboBoxTextSubmittedEventArgs e) < if (IsValid(e.Text)) < FavoriteColor newColor = new FavoriteColor() < ColorName = e.Text, Color = ColorFromStringConverter(e.Text) >ListOfColors.Add(newColor); > else < // If the item is invalid, reject it but do not revert the text. // Mark the event as handled so the framework doesn't update the selected item. e.Handled = true; >> bool IsValid(string Text) < // Validate that the string is: not empty; a color. >

        Получение примера кода

        • Пример коллекции WinUI — просмотр всех элементов управления XAML в интерактивном формате.

        Похожие статьи

        • Текстовые элементы управления
        • Руководство по проверке орфографии
        • Класс TextBox
        • Класс PasswordBox
        • Свойство String.Length

Добавить комментарий

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