4. Привязка объектов контроля к источникам данных

Резюме виртуального режима

если нужна поддержка редактирования значений

Вот и все, что нужно знать о виртуальном режиме: вы устанавливаете свойство VirtualMode В True, Создаете необходимые вам столбцы и строки, а затем предоставляете обработчик для события CellValueNeeded, Который устанавливает соответствующее значение для отображаемой ячейки. Если нужна поддержка редактирования значений непосредственно в сетке, то дополнительно обрабатываете событие CellValuePushed И производите все необходимые действия с модифицированными значениями по мере того, как пользователь вносит свои изменения. Надеюсь, вам не придется в своих приложениях часто прибегать к виртуальному режиму, но возможность получать «на ходу» значения для отображения очень больших коллекций данных или вычисляемых столбцов весьма привлекательна. Не существует строгих и твердых правил относительно того, когда нужен виртуальный режим. Если в вашем приложении возникают проблемы с прокруткой, или вы хотите избежать затрат памяти на хранение вычисленных значений для большого числа строк, следует посмотреть, не решит ли эти проблемы виртуальный режим. Однако вам еще придется подумать о стратегии извлечения и кэширования данных, чтобы избежать серьезного затормаживания приложения на машине клиента. Если не установлено истинным свойство сетки Readonly, А тип ячеек допускает редактирование, то пользователь может щелкнуть на ячейке, подумать, а затем щелкнуть на ней еще раз, чтобы перевести ячейку в режим редактирования. После того как пользователь изменит значение, и фокус ввода, в результате действий с мышью или клавиатурой, перейдет на другую ячейку или другой элемент управления, для этой ячейки будет запущено событие CellValuePushed. В обработчике для этого события вы можете забрать из ячейки новое значение и сделать с ним все, что нужно, например, записать его обратно в свой кэш или в хранилище данных.

Data Grid View Text Box Column

b данные привязанные столбцу этого

Это тип столбца по умолчанию, и он отображает текст в содержащихся ячейках, которые имеют тип DataGridViewTextBoxCell. Данные, привязанные столбцу этого типа, и устанавливаемые в ячейках значения должны принадлежать к типу, допускающему преобразование в строку. Базовым классом, от которого производятся встроенные типы столбцов, является DataGridViewColumn . В этом классе также имеется ряд полезных свойств, которые наследуются специфическими встроенными классами столбцов и посредством которых вы можете управлять поведением сетки. Эти свойства описываются в Имеется несколько встроенных типов столбцов, которые можно использовать для элемента управления DataGridView И которые соответствуют распространенным элементам управления, наиболее часто включаемым разработчиками В Сетку. Следующие подразделы описывают каждый из встроенных типов столбцов и то, что нужно знать при работе с ними. Этот тип столбца поддерживает редактирование, если свойство Readonly Равно False и фокус ввода направлен на ячейку столбца. Для входа в режим редактирования нажмите F2, введите символы и нажмите Enter. При этом в ячейку встраивается отдельный элемент управления типа DataGridViewTextBoxEditingControl, Являющегося производным от DataGridViewTextBoxCell. Этот тип допускает редактирование значения в сетке «по месту», как в хорошо знакомых вам текстовых полях. Значение в текстовом поле создается как временное значение, существующее, пока фокус не покинет ячейку; тогда запускается событие Cell Parsing, И значение сбрасывается в нижележащее хранилище данных, если имеет место привязка, или запускается событие CellValueChanged, Если установлен виртуальный режим.

Расширенные верифицирующие элементы управления

плохо же в них то

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

Элементы управления CheckBox

элемент управления b checkbox b

Элемент управления CheckBox Позволяет пользователям выбирать значения, которые могут быть истинными либо ложными, «да» или «нет», «включено» или «выключено». Элемент управления CheckBox Поддерживает режим с тремя состояниями, где его значением, определяемым его свойством CheckState, Может быть Checked, Unchecked Или Indeterminate. Чтобы использовать этот режим, вы должны установить свойство ThreeState В True. Неопределенное состояние передается затененным квадратиком внутри поля флажка. Поле флажка не подразумевает какой-либо связи между значением элемента управления CheckBox И состоянием или значением другого элемента управления. Элемент управления CheckBox Состоит из собственно поля флажка и текстовой надписи, которая его сопровождает. Вы будете обычно использовать CheckBox, Перетаскивая его на форму, устанавливая его свойство Text И устанавливая свойство Checked В True Либо False, Чтобы указать состояние по умолчанию элемента управления. Вы можете подключить обработчик для события CheckChanged, Чтобы отслеживать моменты, когда состояние элемента управления изменяется, либо просто проверять значение свойства Checked, Когда потребуется, чтобы принять решение относительно другой обработки в вашем коде. Либо, если вам нужно поле флажка с трем состояниями, вы можете установить в True Свойство ThreeState И установить в свойстве CheckState Одно из трех перечислимых значений: Checked, Unchecked Или Indeterminate.

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

Код обработчика для события Selected lndex Changed

когда страница передается обратно в

Код обработчика для события SelectedlndexChanged Из третьей ячейки текущего выбранного элемента, которым является строка в сетке, и показывает его, устанавливая свойство Text Элемента управления Label На странице. Когда страница передается обратно в браузер, метка покажет выбранного заказчика, а выбранная строка будет отображена в сетке иначе, как определяется собственным кодом форматирования и отображения сетки. Заметьте, что когда происходит отсылка, в процессе обработки все равно вызывается обработчик события Page Load, Ко код привязки к данным в этом методе исполняться не будет, поскольку свойство IsPostBack Для страницы будет истинным. Сетка все еще будет отображать ранее полученные данные таблицы, так как по умолчанию DataGrid Несет все данные в Viewstate Для страницы, так что последняя может перерисовать сетку по этим данным, которые возвращаются на сервер с параметрами отправления для страницы. В действительности Viewstate Является просто скрытым полем ввода, передаваемым на страницу, которое содержит закодированные по схеме Base64 данные для находящихся на ней элементов управления. Использование Viewstate Может значительно снижать производительность, так что, если вы хотите избежать передачи туда и обратно всех данных в Viewstate, Вы можете отключить ViewState Для сетки, но тогда вам придется при каждой отсылке вновь запрашивать данные или получать их из кэша на стороне сервера.