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

Элемент управления DataGridView использует несколько типов столбцов для отображения сведений и предоставления пользователям возможности изменять или добавлять их.

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

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

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

Класс Description
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 Picture, используемый в 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.

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

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

DataGridViewLinkColumn

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

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

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

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

См. также