DataGrid 控制項中的預設鍵盤和滑鼠行為
本主題描述使用者可如何使用鍵盤和滑鼠與 DataGrid 控制項互動。
與 DataGrid 的一般互動包括瀏覽、選取和編輯。 選取行為會受到 SelectionMode 和 SelectionUnit 屬性的影響。 造成本主題所述行為的預設值是 DataGridSelectionMode.Extended 和 DataGridSelectionUnit.FullRow。 變更這些值可能會導致行為與所述的行為不同。 當儲存格處於編輯模式時,編輯控制項可能會覆寫 DataGrid 的標準鍵盤行為。
預設鍵盤行為
下表列出 DataGrid 的預設鍵盤行為。
按鍵或按鍵組合 | 描述 |
---|---|
DOWN ARROW | 將焦點移至目前的儲存格正下方的儲存格。 如果焦點位於最後一個資料列中,按向下鍵不會執行任何動作。 |
向上鍵 | 將焦點移至目前的儲存格正上方的儲存格。 如果焦點位於第一個資料列中,按向上鍵不會執行任何動作。 |
向左鍵 | 將焦點移至資料列中的上一個儲存格。 如果焦點位於資料列中的第一個儲存格,按向左鍵不會執行任何動作。 |
向右鍵 | 將焦點移至資料列中的下一個儲存格。 如果焦點位於資料列中的最後一個儲存格,按向右鍵不會執行任何動作。 |
HOME | 將焦點移至目前資料列中的第一個儲存格。 |
END | 將焦點移至目前資料列中的最後一個儲存格。 |
PAGE DOWN | 如果資料列未分組,依完全顯示的資料列數目向下捲動控制項。 將焦點移至最後一個完全顯示的資料列,而不變更資料行。 如果資料列已分組,將焦點移至 DataGrid 中的最後一個資料列,而不變更資料行。 |
PAGE UP | 如果資料列未分組,依完全顯示的資料列數目向上捲動控制項。 將焦點移至第一個顯示的資料列,而不變更資料行。 如果資料列已分組,將焦點移至 DataGrid 中的第一個資料列,而不變更資料行。 |
TAB | 將焦點移至目前資料列中的下一個儲存格。 如果焦點已在資料列的最後一個儲存格中,則會將焦點移至下一個資料列中的第一個儲存格。 如果焦點位於控制項的最後一個儲存格中,則會以父容器的定位順序將焦點移至下一個控制項。 如果目前的儲存格處於編輯模式,按 TAB 鍵會使焦點遠離目前的資料列,對資料列所做的任何變更會在焦點變更之前認可。 |
SHIFT+TAB | 將焦點移至目前資料列中的上一個儲存格。 如果焦點已經在資料列的第一個儲存格中,則會將焦點移至上一列的最後一個儲存格。 如果焦點位於控制項的第一個儲存格中,則會將焦點移至上一個控制項的父容器定位順序。 如果目前的儲存格處於編輯模式,按 TAB 鍵會使焦點遠離目前的資料列,對資料列所做的任何變更會在焦點變更之前認可。 |
CTRL+向下鍵 | 將焦點移至目前資料行中的最後一個儲存格。 |
CTRL+向上鍵 | 將焦點移至目前資料行中的第一個儲存格。 |
CTRL+向右鍵 | 將焦點移至目前資料列中的最後一個儲存格。 |
CTRL+向左鍵 | 將焦點移至目前資料列中的第一個儲存格。 |
CTRL+HOME | 將焦點移至控制項中的第一個儲存格。 |
CTRL+END | 將焦點移至控制項中的最後一個儲存格。 |
CTRL+PAGE DOWN | 與 PAGE DOWN 相同。 |
CTRL+PAGE UP | 與 PAGE UP 相同。 |
F2 | 如果 DataGrid.IsReadOnly 屬性是 false ,而且目前資料行的 DataGridColumn.IsReadOnly 屬性是 false ,請將目前的儲存格放入儲存格編輯模式。 |
ENTER | 認可目前的儲存格和資料列的任何變更,並將焦點移至目前的儲存格正下方的儲存格。 如果焦點位於最後一個資料列中,則會認可任何變更而不移動焦點。 |
ESC | 如果控制項處於編輯模式,請取消編輯,並還原控制項中所做的任何變更。 如果基礎資料來源實作 IEditableObject,則第二次按 ESC 鍵會取消整個資料列的編輯模式。 |
退格鍵 | 編輯儲存格時,刪除游標之前的字元。 |
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 屬性是 true 且 DataGridColumn.CanUserReorder 屬性是 true ,則會移動資料行,使其可以放置於新位置。 |
拖曳資料行標頭分隔符號 | 如果 DataGrid.CanUserResizeColumns 屬性是 true ,且目前資料行的 DataGridColumn.CanUserResize 屬性是 true ,則會調整資料行的大小。 |
按兩下資料行標頭分隔符號 | 如果 DataGrid.CanUserResizeColumns 屬性是 true ,且目前資料行的 DataGridColumn.CanUserResize 屬性是 true ,則會使用 Auto 調整大小模式自動調整資料行的大小。 |
按一下資料行標頭儲存格 | 如果 DataGrid.CanUserSortColumns 屬性是 true ,且目前資料行的 DataGridColumn.CanUserSort 屬性是 true ,則會排序資料行。按一下已排序資料列的標頭,將會反轉該資料行的排序方向。 按一下多個資料行標頭時按下 SHIFT 鍵,會依按下順序依多個資料行排序。 |
CTRL+按一下資料列 | 如果 SelectionMode 設定為 Extended,則會修改非連續多重資料列選取範圍。 如果已經選取資料列,則取消選取該資料列。 |
SHIFT+按一下資料列 | 如果 SelectionMode 設定為 Extended,則會修改連續多重資料列選取範圍。 |
按一下資料列群組標頭 | 展開或摺疊群組。 |
按一下 DataGrid 左上角的 [全選] 按鈕 | 如果 SelectionMode 設定為 Extended,請選取 DataGrid 中的所有資料列。 |
滑鼠選取
如果 SelectionMode 屬性設定為 Extended,在按下 CTRL 或 SHIFT 時按一下資料列將會修改多重資料列選取範圍。
當您按下 CTRL 並按一下資料列時,資料列將會變更其選取狀態,而所有其他資料列都會保留其目前的選取狀態。 執行此動作以選取非相鄰資料列。
當您按下 SHIFT 並按一下資料列時,選取範圍會包含目前資料列與錨點資料列之間的所有資料列,位於按一下前目前資料列的位置。 按下 SHIFT 時,後續按一下會變更目前的資料列,但不會變更錨點資料列。 執行此動作以選取相鄰資料列的範圍。
CTRL+SHIFT 可以結合以選取相鄰資料列的非相鄰範圍。 若要執行這項操作,請使用 SHIFT+按一下來選取第一個範圍,如先前所述。 選取第一個資料列範圍之後,請使用 CTRL+按一下來選取下一個範圍中的第一個資料列,然後在按下 CTRL+SHIFT 時按下一個範圍中的最後一個資料列。