DataGridView 控制項架構 (Windows Form)

DataGridView 控制項及其相關類別被設計為可靈活擴展的系統,用於顯示和編輯表格式資料。 這些類別全都包含在 System.Windows.Forms 命名空間中,而且全都以「DataGridView」前置詞命名。

架構元素

主要的 DataGridView 伴隨類別是從 DataGridViewElement 衍生而來。 下列物件模型說明DataGridViewElement 繼承階層。

Diagram that shows the DataGridViewElement Object Model hierarchy.顯示 DataGridViewElement 物件模型階層的圖表。

zh-TW: DataGridViewElement 類別提供一個對父系 DataGridView 控制項的參照,並具有 State 屬性,該屬性儲存的值代表來自 DataGridViewElementStates 列舉中多種值的組合。

下列各節將更詳細說明 DataGridView 配套類別。

DataGridViewElementStates

DataGridViewElementStates 列舉包含下列值:

這個列舉值可以與位元邏輯運算子結合,因此 State 屬性同時可以表示多個狀態。 例如,DataGridViewElement 可以同時是 Frozen、Selected 和 Visible。

資料格和頻帶

DataGridView 控制項包含兩種基本物件:儲存格和區段。 所有資料格衍生自 DataGridViewCell 基底類別。 DataGridViewColumn 和 DataGridViewRow 這兩種類型的頻帶都繼承自 DataGridViewBand 基類。

DataGridView 控件與數個類別互通,但最常遇到的是 DataGridViewCell、DataGridViewColumn 和 DataGridViewRow。

DataGridViewCell

儲存格是 DataGridView 的互動單位。 顯示會置中於儲存格,而且資料輸入通常會透過儲存格進行。 您可以使用 DataGridViewRow 類別的 Cells 集合來存取資料格,同時可以使用 DataGridView 控制項的 SelectedCells 集合來存取選擇的資料格。 下列物件模型說明此使用方式並顯示 DataGridViewCell 繼承階層。

顯示 DataGridViewCell 物件模型層次結構的圖表。

DataGridViewCell 類型是抽象基底類別,所有資料格類型皆從此類別衍生。 DataGridViewCell 及其衍生類型不是 Windows Forms 控件,但會託管某些 Windows Forms 控件。 資料格所支援的任何編輯功能通常由主控控件處理。

DataGridViewCell 物件不會以與 Windows Forms 控制項相同的方式控制自己的外觀和繪製功能。 相反地,DataGridView 負責其 DataGridViewCell 物件的外觀。 您可以與 DataGridView 控件的屬性和事件互動,大幅影響儲存格的外觀和行為。 當您有超出 DataGridView 控制項功能的自訂特殊需求時,您可以實作一個自 DataGridViewCell 或其子類別之一衍生而來的自已類別。

下列清單列出衍生自 DataGridViewCell 的類別:

DataGridViewColumn

DataGridView 控制項的附加資料存放區架構會透過 DataGridView 控制項的資料行來呈現。 您可以使用Columns集合來存取DataGridView控制項的欄。 您可以使用選取的集合來存取所選欄位。 下列物件模型說明此用法並顯示 DataGridViewColumn 繼承階層。

顯示 DataGridViewColumn 物件模型層次結構的圖表。

某些主要的細胞類型具有對應的欄位類型。 這些衍生自 DataGridViewColumn 基底類別。

下列清單顯示從 DataGridViewColumn 衍生的類別:

DataGridView 編輯控制項

支援進階編輯功能的資料格通常會使用衍生自 Windows Forms 控制件的托管控件。 這些控制項也實作IDataGridViewEditingControl 介面。 下列物件模型說明這些控件的使用方式。

Diagram showing the DataGridView Editing Control Object Model hierarchy.顯示 DataGridView 編輯控制件物件模型階層的圖表。

下列編輯控制項由 DataGridView 控制項提供:

如需建立您自己的編輯控制項的詳細資訊,請參閱如何在 Windows Forms DataGridView 資料格中裝載控件。

下表說明資料格類型、資料行類型和編輯控制件之間的關聯性。

儲存格類型 託管控制項 欄類型
DataGridViewButtonCell n/a DataGridViewButtonColumn
DataGridViewCheckBoxCell n/a DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell n/a DataGridViewImageColumn
DataGridViewLinkCell n/a DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

DataGridViewRow 類別會顯示從附加 DataGridView 控件的資料存放區記錄資料欄位。 您可以使用 Rows 集合來存取 DataGridView 控制項的列。 您可以使用 SelectedRows 集合來存取選取的資料行。 下列物件模型說明此使用方式並顯示 DataGridViewRow 的繼承階層。

顯示 DataGridViewRow 物件模型階層的圖表圖表顯示 DataGridViewRow 物件模型階層。

您可以從 DataGridViewRow 類別衍生出自己的類型,不過這通常是不必要的。 DataGridView 控件有數個資料列相關事件和屬性,供自定義其 DataGridViewRow 對象的行為。

如果您啟用 DataGridView 控制項的 AllowUserToAddRows 屬性,一個用於新增資料列的特殊資料列將顯示在最後一個資料列的位置。 此資料列是Rows集合的一部分,但它具有可能需要您注意的特殊功能。 如需更多資訊,請參閱使用用來新增記錄的資料列於 Windows Form DataGridView 控制項中。

另請參閱

  • DataGridView 控制項概觀
  • 自訂 Windows Forms 的 DataGridView 控制項
  • 在 Windows Forms DataGridView 控制項中,使用資料列來新增記錄