Поделиться через


Типы столбцов элемента управления DataGridView в Windows Forms

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

При связывании элемента управления DataGridView и присвоении свойству AutoGenerateColumns значения true столбцы создаются автоматически с использованием типов столбцов по умолчанию, соответствующих типам данных в связанном источнике данных.

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

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

Класс

Описание

DataGridViewTextBoxColumn

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

DataGridViewCheckBoxColumn

Используется со значениями типа Boolean и CheckState. Создается автоматически при привязке к значениям, имеющим эти типы.

DataGridViewImageColumn

Используется для отображения изображений. Создается автоматически при привязке к байтовым массивам, объектам Image или Icon.

DataGridViewButtonColumn

Используется для отображения кнопок в ячейках. Не может создаваться автоматически при выполнении привязки. Обычно используется в качестве несвязанного столбца.

DataGridViewComboBoxColumn

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

DataGridViewLinkColumn

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

Пользовательский тип столбцов

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

Эти типы столбцов описаны более подробно в следующих разделах.

DataGridViewTextBoxColumn

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

При отображении значения ячеек автоматически приводятся к строковому типу. Вводимые или изменяемые пользователем значения автоматически анализируются и преобразуются в значение ячейки соответствующего типа. Управление этими преобразованиями может осуществляться путем обработки событий CellFormatting и CellParsing элемента управления DataGridView.

Тип данных для значений ячеек данного столбца определяется свойством ValueType столбца.

DataGridViewCheckBoxColumn

Объект DataGridViewCheckBoxColumn используется со значениями Boolean и CheckState. Значения Boolean отображаются как флажки с двумя или тремя состояниями в зависимости от значения свойства ThreeState. Если столбец привязан к значениям типа CheckState, свойство ThreeState по умолчанию имеет значение true.

Обычно ячейки с флажками предназначены либо для хранения данных, как и другие типы ячеек, либо для выполнения массовых операций. Если необходимо обеспечить мгновенную реакцию на щелчок мышью ячейки с флажком, можно воспользоваться обработкой события CellClick, однако это событие происходит до обновления значения ячейки. Если в момент выполнения щелчка мышью уже необходимо новое значение, можно вычислить ожидаемое значение, исходя из текущего значения. В качестве альтернативы можно сразу же зафиксировать изменение и выполнить обработку события CellValueChanged, чтобы обеспечить соответствующую реакцию на это изменение. Чтобы зафиксировать изменение по щелчку ячейки, следует обработать событие CurrentCellDirtyStateChanged. Если данная ячейка содержит флажок вызовите в этом обработчике метод CommitEdit и передайте ему значение Commit.

DataGridViewImageColumn

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

Для автоматического заполнения столбцов изображений из источника данных могут использоваться байтовые массивы различных графических форматов, включая любые форматы, поддерживаемые классом Image, а также графический формат OLE, используемый в Microsoft® Access и демонстрационной базе данных "Northwind".

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

Заполнение ячеек столбца изображений с помощью обработчика события CellFormatting может использоваться при необходимости отображения изображений в соответствии с вычисленным значениями либо отображения значений, не являющихся изображениями. Например, имеется столбец "Risk" со строковыми значениями, такими как "high", "middle" и "low", которые нужно представить в виде значков. Другой пример — столбец "Image", содержащий сведения о расположении изображений, которые должны быть загружены, а не сам двоичный код изображений.

DataGridViewButtonColumn

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

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

Реакция на щелчок мышью по кнопке, размещенной в ячейке, может быть определена с помощью обработчика события DataGridView.CellClick.

DataGridViewComboBoxColumn

Тип столбцов DataGridViewComboBoxColumn позволяет отображать столбцы ячеек, содержащих раскрывающиеся списки. Такие столбцы могут использоваться в случае, если ячейки для ввода данных могут иметь только некоторые определенные значения. Примером может служить столбец "Category" таблицы "Products" в демонстрационной базе данных "Northwind".

Заполнение раскрывающегося списка, используемого для всех ячеек столбца, производится аналогично заполнению раскрывающегося списка ComboBox. Оно может выполняться либо вручную с помощью коллекции, возвращаемой свойством Items, либо путем привязки к источнику данных посредством свойств DataSource, DisplayMember и ValueMember. Дополнительные сведения см. в разделе Элемент управления ComboBox (Windows Forms).

Фактические значения ячеек можно привязать к источнику данных, используемому элементом управления DataGridView, путем задания свойства DataPropertyName объекта System.Windows.Forms.DataGridViewComboBoxColumn.

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

DataGridViewLinkColumn

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

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

Реакция на щелчок мышью по ссылке в ячейке может быть определена с помощью обработчика события CellContentClick. Это событие отличается от событий CellClick и CellMouseClick, которые наступают при щелчке мышью в любом месте в пределах ячейки.

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

См. также

Задачи

Практическое руководство. Вывод изображений в ячейках элемента управления DataGridView в Windows Forms

Практическое руководство. Работа со столбцами изображений в элементе управления DataGridView в Windows Forms

Ссылки

DataGridView

DataGridViewColumn

DataGridViewButtonColumn

DataGridViewCheckBoxColumn

DataGridViewComboBoxColumn

DataGridViewImageColumn

DataGridViewTextBoxColumn

DataGridViewLinkColumn

Другие ресурсы

элемент управления DataGridView (Windows Forms)

Настройка элементов управления DataGridView в Windows Forms