有时,你希望应用程序根据 DataGridView 控件中的用户选择执行操作。 根据操作,可能需要限制可能的选择类型。 例如,假设应用程序可以打印当前所选记录的报表。 在这种情况下,可能需要配置 DataGridView 控件,以便单击行内的任意位置始终选择整个行,因此一次只能选择一行。
可以通过将 DataGridView.SelectionMode 属性设置为以下 DataGridViewSelectionMode 枚举值之一来指定允许的选择。
DataGridViewSelectionMode 值 | DESCRIPTION |
---|---|
CellSelect | 单击某个单元格可将其选中。 行标题和列标题不能用于选择。 |
ColumnHeaderSelect | 单击某个单元格可将其选中。 单击列标题会选择整个列。 列标题不能用于排序。 |
FullColumnSelect | 单击单元格或列标题会选择整个列。 列标题不能用于排序。 |
FullRowSelect | 单击单元格或行标题会选择整个行。 |
RowHeaderSelect | 默认选择模式。 单击某个单元格可将其选中。 单击行标题可以选择整行。 |
注释
在运行时更改选择模式会自动清除当前选择。
默认情况下,用户可以通过使用鼠标拖动来选择多个行、列或单元格,在选择时按 Ctrl 或 SHIFT 以扩展或修改所选内容,或单击左上角标题单元格以选择控件中的所有单元格。 若要防止此行为,请将 MultiSelect 属性设置为 false
。
FullRowSelect 和 RowHeaderSelect 模式允许用户通过选择行并按 DELETE 键来删除行。 仅当当前单元格不在编辑模式下时,用户才能删除行,AllowUserToDeleteRows 属性设置为 true
,并且基础数据源支持用户驱动的行删除。 请注意,这些设置不会阻止以编程方式删除行。
以编程方式选择
当前选择模式限制编程选择以及用户选择的行为。 可以通过设置 Selected
控件中存在的任何单元格、行或列的 DataGridView 属性,以编程方式更改当前选择。 还可以通过 SelectAll 方法选择控件中的所有单元格,具体取决于选择模式。 若要清除所选内容,请使用 ClearSelection 方法。
如果 MultiSelect 属性设置为 true
,可以通过更改元素的 DataGridView 属性,将 Selected
元素添加到选定区域或将其从所选内容中删除。 否则,将一个元素的 Selected
属性设置为 true
会自动从所选内容中删除其他元素。
请注意,更改 CurrentCell 属性的值不会更改当前所选内容。
可以通过 SelectedCells 控件的 SelectedRows、SelectedColumns和 DataGridView 属性检索当前所选单元格、行或列的集合。 选择控件中的每个单元格时,访问这些属性效率低下。 若要避免在这种情况下出现性能损失,请首先使用 AreAllCellsSelected 方法。 此外,访问这些集合以确定所选单元格、行或列的数量可能效率低下。 相反,应该使用 GetCellCount、GetRowCount 或 GetColumnCount 方法,传入 Selected 值。
小窍门
可以在 DataGridView 类概述中找到演示如何以编程方式使用所选单元格的示例代码。