Windows 窗体 DataGridView 控件中的列类型

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

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

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

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

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

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

DataGridViewTextBoxColumn

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

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

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

DataGridViewCheckBoxColumn

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

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

DataGridViewImageColumn

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

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

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

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

DataGridViewButtonColumn

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

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

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

DataGridViewComboBoxColumn

使用 DataGridViewComboBoxColumn,可以显示一列包含下拉列表框的单元格。 对于只能包含特定值的字段中的数据输入,例如 Northwind 示例数据库中 Products 表的 Category 列,该类非常有用。

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

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

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

DataGridViewLinkColumn

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

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

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

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

另请参阅