Windows Forms DataGridView 控件中的列类型

DataGridView 控件使用多个列类型来显示其信息,并使用户能够修改或添加信息。

绑定 DataGridView 控件并将 AutoGenerateColumns 属性设置为 true时,将使用适用于绑定数据源中包含的数据类型的默认列类型自动生成列。

还可以自行创建任何列类的实例,并将其添加到 Columns 属性返回的集合中。 可以创建这些实例以用作未绑定列,也可以手动绑定它们。 手动绑定的列非常有用,例如,如果要将一种类型的自动生成的列替换为另一种类型的列。

下表介绍了可用于 DataGridView 控件的各种列类。

班级 DESCRIPTION
DataGridViewTextBoxColumn 与基于文本的值一起使用。 绑定到数字和字符串时自动生成。
DataGridViewCheckBoxColumn BooleanCheckState 值一起使用。 绑定到这些类型的值时自动生成。
DataGridViewImageColumn 用于显示图像。 绑定到字节数组、Image 对象或 Icon 对象时自动生成。
DataGridViewButtonColumn 用于在单元格中显示按钮。 绑定时不会自动生成。 通常用作未绑定列。
DataGridViewComboBoxColumn 用于在单元格中显示下拉列表。 绑定时不会自动生成。 通常手动绑定数据。
DataGridViewLinkColumn 用于在单元格中显示链接。 绑定时不会自动生成。 通常手动绑定数据。
自定义列类型 可以通过继承 DataGridViewColumn 类或其任何派生类来创建一个自定义列类,从而自定义外观、行为或托管控件。 有关详细信息,请参阅如何:通过扩展 Windows 窗体 DataGridView 控件中单元格和列的行为和外观对其进行自定义

以下各节更详细地介绍了这些列类型。

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn 是用于基于文本的值(如数字和字符串)的常规用途列类型。 在编辑模式下,活动单元格中会显示 TextBox 控件,使用户能够修改单元格值。

单元格值将自动转换为字符串以供显示。 用户输入或修改的值会自动分析,以创建相应数据类型的单元格值。 可以通过处理 CellFormatting 控件的 CellParsingDataGridView 事件来自定义这些转换。

列的单元格值数据类型在列的 ValueType 属性中指定。

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumnBooleanCheckState 值一起使用。 Boolean 值显示为双状态或三态复选框,这取决于 ThreeState 属性的值。 当列绑定到 CheckState 值时,ThreeState 属性值默认 true

通常,复选框单元格值适用于存储(如任何其他数据)或执行批量操作。 如果要在用户单击复选框单元格时立即响应,可以处理 CellClick 事件,但此事件在更新单元格值之前发生。 如果在单击时需要新值,一个选项是根据当前值计算预期值。 另一种方法是立即提交更改,并处理 CellValueChanged 事件以响应更改。 若要在单击单元格时提交更改,必须处理 CurrentCellDirtyStateChanged 事件。 在处理程序中,如果当前单元格是复选框单元格,请调用 CommitEdit 方法并传入 Commit 值。

数据网格视图图像列

DataGridViewImageColumn 用于显示图像。 可以从数据源自动填充图像列、手动为未绑定列填充,或在 CellFormatting 事件的处理程序中动态填充图像列。

从数据源自动填充图像列适用于各种图像格式的字节数组,包括 Image 类支持的所有格式以及 Microsoft® Access 和 Northwind 示例数据库使用的 OLE 图片格式。

如果要提供 DataGridViewButtonColumn 的功能但同时具有自定义外观,则手动填充图像列非常有用。 你可以处理 DataGridView.CellClick 事件以响应图像单元格内的单击操作。

如果要为计算值或非图像格式的值提供图像,则在 CellFormatting 事件的处理程序中填充图像列的单元格非常有用。 例如,你可能有一个“风险”列,其中包含像 "high""middle""low" 这样的字符串值,并希望将其显示为图标。 或者,你可能有一个“图像”列,其中包含必须加载的图像的位置,而不是图像的二进制内容。

DataGridViewButtonColumn

使用 DataGridViewButtonColumn,可以显示一列包含按钮的单元格。 当你希望为用户提供一种简单的方式来对特定记录执行操作(例如在单独的窗口中下订单或显示子记录)时,这非常有用。

DataGridView 控件进行数据绑定时,不会自动生成按钮列。 若要使用按钮列,必须手动创建这些列,并将其添加到由 DataGridView.Columns 属性返回的集合。

可以通过处理 DataGridView.CellClick 事件来响应用户在按钮单元格中的单击操作。

数据网格视图下拉框列

使用 DataGridViewComboBoxColumn,可以显示包含下拉列表框的一列单元格。 在只能包含特定值的字段中进行数据输入时,这非常有用,例如 Northwind 示例数据库中“产品”表中的“类别”列。

可以填充用于所有单元格的下拉列表,就像填充 ComboBox 下拉列表一样,手动通过 Items 属性返回的集合,或通过 DataSourceDisplayMemberValueMember 属性将其绑定到数据源。 有关详细信息,请参阅组合框控件

可以通过设置 DataGridViewDataPropertyName 属性,将实际单元格值绑定到 System.Windows.Forms.DataGridViewComboBoxColumn 控件使用的数据源。

DataGridView 控件进行数据绑定时,不会自动生成组合框列。 若要使用组合框列,必须手动创建它们,并将其添加到由 Columns 属性返回的集合中。

DataGridViewLinkColumn

使用 DataGridViewLinkColumn,可以显示包含超链接的单元格列。 这对于数据源中的 URL 值,或者作为按钮列的替代方案(例如用于执行特殊行为如打开带有子记录的窗口)非常有用。

数据绑定DataGridView控件时,链接列不会自动生成。 若要使用链接列,必须手动创建这些列,并将其添加到 Columns 属性返回的集合中。

可以通过处理 CellContentClick 事件来响应用户对链接的单击操作。 此事件不同于 CellClickCellMouseClick 事件,当用户单击单元格中的任意位置时发生。

DataGridViewLinkColumn 类提供了多个属性,用于在单击链接之前、期间和之后修改链接的外观。

另请参阅