Windows 窗体 DataGridView 控件中的选择模式

有时,你希望应用程序根据 DataGridView 控件中的用户选择来执行操作。 根据操作,你可能想要限制可能的选择类型。 例如,假设应用程序可以打印当前所选记录的报表。 在这种情况下,可能需要配置 DataGridView 控件,以便单击行中的任何位置都可以选中整个行,并且一次只能选择一行。

可以通过将 DataGridView.SelectionMode 属性设置为以下 DataGridViewSelectionMode 枚举值之一,来指定允许的选择。

DataGridViewSelectionMode 值 说明
CellSelect 单击某个单元格可将其选中。 行标题和列标题不能用于选择。
ColumnHeaderSelect 单击某个单元格可将其选中。 单击列标题会选择整个列。 列标题不能用于排序。
FullColumnSelect 单击单元格或列标题会选择整个列。 列标题不能用于排序。
FullRowSelect 单击单元格或行标题会选择整个行。
RowHeaderSelect 默认选择模式。 单击某个单元格可将其选中。 单击行标题可以选择整行。

注意

在运行时更改选择模式会自动清除当前选择。

默认情况下,用户可以通过鼠标拖动来选择多个行、列或单元格,在选择扩展或修改选择的同时按 CTRL 或 SHIFT,或者单击左上角的标题单元格以选择控件中的所有单元格。 若要防止此行为,请将 MultiSelect 属性设置为 false

FullRowSelectRowHeaderSelect 模式支持用户通过选定行,然后按 DELETE 键来删除行。 仅在当前单元格不处于编辑模式,AllowUserToDeleteRows 属性设置为 true,并且基础数据源支持用户驱动的行删除时,用户才能删除行。 请注意,这些设置不会阻止以编程方式删除行。

以编程方式选择

当前选择模式限制以编程方式程序选择和用户选择的行为。 可以通过设置 DataGridView 控件中的任何单元格、行或列的 Selected 属性以编程方式更改当前选择。 还可以通过 SelectAll 方法选中控件中的所有单元格(具体取决于选择模式)。 若要清除所选内容,请使用 ClearSelection 方法。

如果 MultiSelect 属性设置为 true,则可以通过更改元素的 Selected 属性,将 DataGridView 元素添加到所选内容或将其从选择中删除。 否则,将元素的 Selected 属性设置为 true 会自动从所选内容中删除其他元素。

请注意,更改 CurrentCell 属性的值不会更改当前所选内容。

可以通过 DataGridView 控件的 SelectedCellsSelectedRowsSelectedColumns 属性检索当前选定的单元格、行或列的集合。 选中控件中的所有单元格后,访问这些属性的效率很低。 若要在这种情况下避免出现性能损失,请先使用 AreAllCellsSelected 方法。 此外,访问这些集合以确定所选单元格、行或列的数量可能效率低下。 相反,应该使用 GetCellCountGetRowCountGetColumnCount 方法,传入 Selected 值。

提示

可以在 DataGridView 类概述中找到演示如何以编程方式使用所选单元格的示例代码。

另请参阅