Элемент управления "BoundChooseBox"
Элемент управления BoundChooseBox
предназначен для выбора значений ссылочных полей при помощи унифицированного интерфейса. В стандартном виде, элемент управления ChooseBox
представляет из себя поле для отображения результатов выбора, и связанную с ним кнопку …, инициирующую новый выбор:
BoundChooseBox
использует технологию Data Binding (что отражено в его названии) для автоматической привязки к одному из полей карточки ссылочного типа (RefID
или RefCardID
). При этом он автоматически определяет тип ссылки, и в зависимости от этого отображает соответствующий интерфейс для выбора значения:
-
RefCardID
— если поле является ссылкой на карточку, то для выбора значенияBoundChooseBox
отображает интерфейс Windows-клиента, в котором разрешено выбирать карточки. -
RefID
— для типизированной ссылки на строку другой карточки (или справочника). На выбор открывается пользовательский интерфейс этой карточки. Например, если поле является ссылкой на строку секции справочника сотрудников, то на выбор будет открыт справочник сотрудников.Особым случаем является ссылка на строку секции карточки папок — в этом случае элемент управления откроет на выбор Windows-клиент, в котором разрешено выбирать папки.
Если поле |
При работе в режиме связывания, элемент управления BoundChooseBox
автоматически выполняет чтение данных из поля карточки и первичную инициализацию, а также автоматически сохраняет выбранное значение в поле карточки в процессе использования. Таким образом, разработчику нужно выполнить только предварительную настройку элемента управления в Design Time, и нет необходимости писать код обработчиков событий.
Кроме этого, элемент управления BoundChooseBox
имеет дополнительные сервисные функции:
-
Поддержка быстрого поиска и выбора объектов по нажатию горячих клавиш Ctrl+K.
-
Возможность ассоциации дополнительного контекстного меню для поля результатов выбора.
Рисунок 2. Контекстное меню "BoundChooseBox" -
Возможность ассоциации дополнительного контекстного меню для кнопки выбора
Рисунок 3. Контекстного меню кнопки выбора
Прежде чем приступить к использованию элемента управления BoundChooseBox
, необходимо подготовить источник данных для него. В качестве источника данных может выступать объект RowDataSource
, предназначенный для работы со строками секции карточки. Однако здесь необходимо учесть один нюанс: источник данных RowDataSource
может возвращать сразу несколько строк (например, для секции коллекционного типа), а элемент управления BoundChooseBox
может отображать только значение конкретного поля одной конкретной строки. Чтобы разрешить это противоречие, вводится ещё один промежуточный объект — BindingSource
, который предназначен как раз, чтобы выбрать одну конкретную строку из набора, возвращаемого RowDataSource
. Общую картину связывания данных в этом случае можно представить как на рисунке ниже.
Объект BindingSource
входит в число стандартных элементов управления Microsoft, и доступен на панели инструментов в группе Data
. Использовать его достаточно просто, он содержит всего одно значимое свойство — DataSource
, где нужно разместить ссылку на уже подготовленный источник данных RowDataSource
.
После создания и настройки источников данных (RowDataSource
и BindingSource
) можно приступать к настройке собственно элемента управления BoundChooseBox
.
В свойстве BindingSource
необходимо указать ссылку на предварительно настроенный объект BindingSource
. После этого, в свойстве DataMember
появится возможность выбрать (или ввести вручную) название конкретного поля карточки, с которыми связывается элемент управления BoundDataSource
. Именно описание этого поля в схеме карточки будет являться определяющим для дальнейшей работы элемента управления (что конкретно он будет выбирать).
Дополнительно можно указать свойство FormatString
— определяющее, как именно BoundChooseBox
будет отображать выбранное значение. Формировать отображаемое значение можно при помощи комбинации строковых констант и значений любых полей той строки, из которой производится выбор. Имена полей оформляются в строке отображения в фигурных скобках, а строковые константы — напрямую. Таким образом, пример строки отображения для вывода данных о сотруднике (строка секции Emploees
из справочника сотрудникорв — RefStaff
) может выглядеть так:
Фамилия:{LastName}_Имя:{FirstName}_Отчество:{MiddleName}
Свойства CommandMenuStrip
и ContextMenuStrip
позволяют сформировать контекстные меню для кнопки выбора и отображаемого значения соответственно. Для реализации самих контекстных меню используется стандартный элемент управления Microsoft ContextMenuStrip
. Его необходимо предварительно добавить на форму карточки и настроить его свойства (добавить пункты меню), а также создать обработчики для событий выбора пунктов меню. Готовый и настроенный элемент управления можно указать в качестве значения свойства CommandMenuStrip
или ContextMenuStrip
.
В случае использования меню команд выбора CommandMenuStrip, стандартный значок кнопки выбора … будет заменён на иконку первого из пунктов контекстного меню. |
BoundChooseBox
:-
Caption
— заголовок окна выбора. -
HideNotAvailable
— признак не показывать скрытые элементы для выбора. -
SearchDelimiter
— разделительный символ для быстрого поиска.Элемент управления позволяет выполнять быстрый поиск по всем полям, указанным в строке отображения, в порядке их следования. Для разделения этих полей при вводе используется этот символ.
По умолчанию это пробел.
-
SearchSubstring
— для быстрого поиска по Ctrl+K. Признак, искать ли вхождение подстроки только сначала или в любом месте.По умолчанию значение равно
false
, то есть поиск ведется только по первым символам. -
Text
— отображаемое значение элемента управления. -
Value
— выбранное значение (идентификатор).