Windows Form DataGridView 控制項中的選取模式

更新:2007 年 11 月

有些時候您想要讓應用程式根據使用者在 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,則您可以變更 DataGridView 項目的 Selected 屬性,將項目加入選取範圍或從選取範圍中移除。否則,在一個項目上將 Selected 屬性設定為 true 會自動將其他項目從選取範圍中移除。

請注意,變更 CurrentCell 屬性值並不會改變目前的選取。

您可以透過 DataGridView 控制項的 SelectedCellsSelectedRowsSelectedColumns 屬性來擷取目前所選取的儲存格、資料列或資料行之集合。當控制項中的所有儲存格都已選取時,存取這些屬性是沒有效率的。若要在這種情況下避免效能損失,請先使用 AreAllCellsSelected 方法。此外,藉由存取這些集合來判斷選取的儲存格、資料列或資料行數目也有可能是沒有效率的。您應該使用 GetCellCountGetRowCountGetColumnCount 方法傳回 Selected 值來代替。

請參閱

工作

HOW TO:設定 Windows Form DataGridView 控制項的選取模式

參考

DataGridView

MultiSelect

SelectionMode

DataGridViewSelectionMode

其他資源

選取範圍和剪貼簿與 Windows Form DataGridView 控制項搭配使用