DataGrid 控件中的默认键盘和鼠标行为

本主题介绍用户如何使用键盘和鼠标与 DataGrid 控件进行交互。

DataGrid 的典型交互包括导航、选择和编辑。 选择行为受 SelectionModeSelectionUnit 属性的影响。 导致本主题所述行为的默认值是 DataGridSelectionMode.ExtendedDataGridSelectionUnit.FullRow。 更改这些值可能会导致行为与描述不同。 单元格处于编辑模式时,编辑控件可能会覆盖 DataGrid 的标准键盘行为。

默认键盘行为

下表列出了 DataGrid 的默认键盘行为。

键或组合键 说明
向下键 将焦点移至当前单元格正下方的单元格。 如果焦点在最后一行,则按向下箭头不执行任何操作。
向上键 将焦点移至当前单元格正上方的单元格。 如果焦点在第一行,则按向上箭头不执行任何操作。
向左键 将焦点移至行中的上一个单元格。 如果焦点在行中的第一个单元格,则按向左箭头不执行任何操作。
向右键 将焦点移至行中的下一个单元格。 如果焦点在行中的最后一个单元格,则按向右箭头不执行任何操作。
Home 将焦点移至当前行中的第一个单元格。
End 将焦点移至当前行中的最后一个单元格。
Page Down 如果行未分组,则按完全显示的行数向下滚动控件。 在不更改列的情况下,将焦点移至最后一个完全显示的行。

如果行已分组,则在不更改列的情况下,将焦点移至 DataGrid 中的最后一行。
Page Up 如果行未分组,则按完全显示的行数向上滚动控件。 在不更改列的情况下,将焦点移至显示的第一行。

如果行已分组,则在不更改列的情况下,将焦点移至 DataGrid 中的第一行。
Tab 将焦点移至当前行中的下一个单元格。 如果焦点位于该行的最后一个单元格,则将焦点移至下一行的第一个单元格。 如果焦点位于控件中的最后一个单元格,则将焦点移至父容器的 Tab 键顺序中的下一个控件。

如果当前单元格处于编辑模式并且按 TAB 使焦点从当前行移开,则在焦点更改之前会提交对该行所做的任何更改。
Shift+Tab 将焦点移至当前行中的上一个单元格。 如果焦点已经位于该行的第一个单元格,则将焦点移至上一行的最后一个单元格。 如果焦点位于控件中的第一个单元格,则将焦点移至父容器的 Tab 键顺序中的上一个控件。

如果当前单元格处于编辑模式并且按 TAB 使焦点从当前行移开,则在焦点更改之前会提交对该行所做的任何更改。
CTRL + 向下箭头 将焦点移至当前列中的最后一个单元格。
CTRL + 向上箭头 将焦点移至当前列中的第一个单元格。
Ctrl+向右键 将焦点移至当前行中的最后一个单元格。
Ctrl+向左键 将焦点移至当前行中的第一个单元格。
Ctrl+Home 将焦点移至控件中的第一个单元格。
Ctrl+End 将焦点移至控件中的最后一个单元格。
Ctrl+PAGE DOWN 与 PAGE DOWN 相同。
Ctrl+PAGE UP 与 PAGE UP 相同。
F2 如果当前列的 DataGrid.IsReadOnly 属性为 falseDataGridColumn.IsReadOnly 属性为 false,则将当前单元格置于单元格编辑模式。
Enter 提交对当前单元格和行的任何更改,并将焦点移至当前单元格正下方的单元格。 如果焦点在最后一行,则在不移动焦点的情况下提交所有更改。
ESC 如果控件处于编辑模式,则取消编辑并还原在控件中所做的所有更改。 如果基础数据源实现 IEditableObject,则再次按 ESC 将取消整行的编辑模式。
Backspace 编辑单元格时删除光标前的字符。
DELETE 编辑单元格时删除光标后的字符。
Ctrl+Enter 在不移动焦点的情况下,提交对当前单元格所做的任何更改。
CTRL + A 如果 SelectionMode 设置为 Extended,则选择 DataGrid 中的所有行。

选择键

如果 SelectionMode 属性设置为 Extended,则导航行为不会改变,但在按下 SHIFT(包括 CTRL+SHIFT)的同时使用键盘导航将修改多行选定内容。 导航开始前,控件将当前行标记为定位行。 如果在按下 Shift 的同时进行导航,所选内容将包括定位行和当前行之间的所有行。

以下选择键可修改多行选定内容。

  • SHIFT + 向下键

  • SHIFT + 向上键

  • SHIFT + Page Down

  • SHIFT + PAGE UP

  • Ctrl+Shift+向下键

  • Ctrl+Shift+向上键

  • Ctrl+Shift+Home

  • Ctrl+Shift+End

默认鼠标行为

下表列出了 DataGrid 的默认鼠标行为。

鼠标操作 说明
单击未选中的行 将单击的行设置为当前行,并将单击的单元格设置为当前单元格。
单击当前单元格 将当前单元格置于编辑模式下。
拖动列标头单元格 如果当前列的 DataGrid.CanUserReorderColumns 属性为 trueDataGridColumn.CanUserReorder 属性为 true,则移动该列,将其拖放到新位置。
拖动列标头分隔符 如果当前列的 DataGrid.CanUserResizeColumns 属性为 trueDataGridColumn.CanUserResize 属性为 true,则调整该列的大小。
双击列标头分隔符 如果当前列的 DataGrid.CanUserResizeColumns 属性为 trueDataGridColumn.CanUserResize 属性为 true,则使用 Auto 大小调整模式自动调整该列大小。
单击列标头单元格 如果当前列的 DataGrid.CanUserSortColumns 属性为 trueDataGridColumn.CanUserSort 属性为 true,则对该列进行排序。

单击已排序的列的标头会反转该列的排序方向。

单击多个列标头的同时按下 SHIFT 键会按单击的顺序对多个列进行排序。
对行进行 CTRL+click 操作 如果 SelectionMode 设置为 Extended,则修改非连续的多行选定内容。

如果该行已选中,则取消选中该行。
对行进行 SHIFT+click 操作 如果 SelectionMode 设置为 Extended,则修改连续的多行选定内容。
单击行组标头 展开或折叠组。
单击 DataGrid 左上角的“全选”按钮 如果 SelectionMode 设置为 Extended,则选择 DataGrid 中的所有行。

鼠标选择

如果 SelectionMode 属性设置为 Extended,则在按下 CTRL 或 SHIFT 的同时单击某一行将修改多行选定内容。

如果在按下 CTRL 的同时单击某一行,该行将更改其选择状态,而所有其他行保持其当前选择状态。 执行此操作可选择不相邻的行。

按下 SHIFT 的同时单击某一行时,所选内容包括当前行与定位行(单击前当前行所在行)之间的所有行。 按下 SHIFT 时的后续单击会更改当前行,但不会更改定位行。 执行此操作可选择相邻行范围。

可以结合使用 CTRL+SHIFT 选择相邻行的不相邻范围。 若要实现这一点,则如前所述,使用 SHIFT+click 选择第一个范围。 选择第一个行范围后,使用 CTRL+click 选择下一个范围中的第一行,然后在按下 CTRL+SHIFT 的同时单击下一个范围中的最后一行。

另请参阅