最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

DataGridView控件詳細介紹

來源:懂視網 責編:小采 時間:2020-11-27 22:42:15
文檔

DataGridView控件詳細介紹

DataGridView控件詳細介紹:1何為DataGridView 通過DataGridView控件,可以顯示和編輯表格式的數據,而這些數據可以取自多種不同類型的數據源。 DataGridView控件具有很高的的可配置性和可擴展性,提供了大量的屬性、方法和事件,可以用來對該控件的外觀和行為進行自定義。當你需要在W
推薦度:
導讀DataGridView控件詳細介紹:1何為DataGridView 通過DataGridView控件,可以顯示和編輯表格式的數據,而這些數據可以取自多種不同類型的數據源。 DataGridView控件具有很高的的可配置性和可擴展性,提供了大量的屬性、方法和事件,可以用來對該控件的外觀和行為進行自定義。當你需要在W

1何為DataGridView
通過DataGridView控件,可以顯示和編輯表格式的數據,而這些數據可以取自多種不同類型的數據源。
DataGridView控件具有很高的的可配置性和可擴展性,提供了大量的屬性、方法和事件,可以用來對該控件的外觀和行為進行自定義。當你需要在WinForm應用程序中顯示表格式數據時,可以優(yōu)先考慮DataGridView(相比于DataGrid等其它控件)。如果你要在小型網格中顯示只讀數據,或者允許用戶編輯數以百萬計的記錄,DataGridView將為你提供一個易于編程和良好性能的解決方案。

DataGridView 用來替換先前版本中的DataGrid,擁有較DataGrid更多的功能;但DataGrid仍然得到保留,以備向后兼容和將來使用。如果你要在兩者中選擇,可以參考下面給出的DataGrid 和DataGridView之間區(qū)別的細節(jié)信息。

1.1DataGridView和DataGrid 之間的區(qū)別
DataGridView提供了大量的DataGrid所不具備的基本功能和高級功能。此外,DataGridView 的結構使得它較之DataGrid控件更容易擴展和自定義。
下表描述了DataGridView提供而DataGrid未提供的幾個主要功能。

DataGridView功能

描述

多種列類型

與DataGrid相比,DataGridView 提供了更多的內置列類型。這些列類型能夠滿足大部分常見需要,而且比DataGrid中的列類型易于擴展或替換。

多種數據顯示方式

DataGrid僅限于顯示外部數據源的數據。而DataGridView則能夠顯示非綁定的數據,綁定的數據源,或者同時顯示綁定和非綁定的數據。你也可以在DataGridView中實現virtual mode,實現自定義的數據管理。

用于自定義數據顯示的多種方式

DataGridView提供了很多屬性和事件,用于數據的格式化和顯示。比如,你可以根據單元格、行和列的內容改變其外觀,或者使用一種類型的數據替代另一種類型的數據。

用于更改單元格、行、列、表頭外觀和行為的多個選項

DataGridView使你能夠以多種方式操作單個網格組件。比如,你可以凍結行和列,避免它們因滾動而不可見;隱藏行、列、表頭;改變行、列、表頭尺寸的調整方式;為單個的單元格、行和列提供工具提示(ToolTip)和快捷菜單。

唯一的一個DataGrid提供而DataGridView未提供的特性是兩個相關表中數據的分層次顯示(比如常見的主從表顯示)。你必須使用兩個DataGridView來顯示具有主從關系的兩個表的數據。

1.2DataGridView的亮點
下表著重顯示了DataGridView的主要特性,稍后會介紹它們的詳細信息。

DataGridView控件特性

描述

多種列類型

DataGridView提供有TextBox、CheckBox、Image、Button、ComboBox和Link類型的列及相應的單元格類型。

多種數據顯示方式

DataGrid僅限于顯示外部數據源的數據。而DataGridView則能夠顯示非綁定的數據,綁定的數據源,或者同時顯示綁定和非綁定的數據。你也可以在DataGridView中實現virtual mode,實現自定義的數據管理。

自定義數據的顯示和操作的多種方式

DataGridView提供了很多屬性和事件,用于數據的格式化和顯示。

此外,DataGridView提供了操作數據的多種方式,比如,你可以:

  • 對數據排序,并顯示相應的排序符號(帶方向的箭頭表示升降序)
  • 對行、列和單元格的多種選擇模式;多項選擇和單項選擇
  • 以多種格式將數據拷貝到剪貼板,包括text,CSV (以逗號隔開的值) 和 HTML
  • 改變用戶編輯單元格內容的方式
  • 用于更改單元格、行、列、表頭外觀和行為的多個選項

    DataGridView使你能夠以多種方式操作單個網格組件。比如,你可以:

  • 凍結行和列,避免它們因滾動而不可見;
  • 隱藏行、列、表頭;
  • 改變行、列、表頭尺寸的調整方式;
  • 改變用戶對行、列、單元格的選擇模式;
  • 為單個的單元格、行和列提供工具提示(ToolTip)和快捷菜單。
  • 自定義單元格、行和列的邊框樣式。
  • 提供豐富的可擴展性的支持

    DataGridView提供易于對網格進行擴展和自定義的基礎結構,比如:

  • 處理自定義的繪制事件可以為單元格、列和行提供自定義的觀感;
  • 繼承一個內置的單元格類型以為其提供更多的行為;
  • 實現自定義的接口以提供新的編輯體驗。
  • 2DataGridView的結構
    DataGridView及其相關類被設計為用于顯示和編輯表格數據式數據的靈活的、可擴展的體系。這些類都位于system.Windows.Forms命名空間,它們的名稱也都有共同的前綴"DataGridView"。

    2.1結構元素(Architecture Elements)
    主要的DataGridView相關類繼承自DataGridViewElement類。
    DataGridViewElement類有兩個屬性,一是DataGridView,該屬性提供了對其所屬的DataGridView的引用;二是State,該屬性表示當前的狀態(tài),其值為DataGridViewElementStates枚舉,該枚舉支持位運算,這意味著可以設置組合狀態(tài)。

    2.2單元格和組(Cells and Bands)
    DataGridView由兩種基本的對象組成:單元格(cell)和組(band)。所有的單元格都繼承自DataGridViewCell基類。 兩種類型的組(或稱集合)DataGridViewColumn和DataGridViewRow都繼承自DataGridViewBand 基類,表示一組結合在一起的單元格。
    DataGridView會與一些類進行互操作,但最常打交道的則是如下三個:DataGridViewCell, DataGridViewColumn,DataGridViewRow。

    2.3DataGridView的單元格 (DataGridViewCell)
    單元格(cell)是操作DataGridView的基本單位。Display is centered on cells, and data entry is often performed through cells??梢酝ㄟ^DataGridViewRow 類的Cells 集合屬性訪問一行包含的單元格,通過DataGridView的SelectedCells集合屬性訪問當前選中的單元格,通過DataGridView的CurrentCell屬性訪問當前的單元格。

    DataGridViewCell 類圖

    Cell相關類和屬性

    DataGridViewCell是一個抽象基類,所有的單元格類型都繼承于此。DataGridViewCell及其繼承類型并不是Windows Forms控件,但其中一些宿主于Windows Forms控件。單元格支持的編輯功能通常都由其宿主控件來處理。

    DataGridViewCell對象不會像Windows Forms控件那樣控制自己的外觀和繪制(painting)特征,相反的,DataGridView會負責其包含的單元格的外觀。通過DataGridView 控件的屬性和事件,你可以深刻地影響單元格的外觀和行為。如果你對單元格定制有特殊要求,超出了DataGridView提供的功能,可以繼承DataGridViewCell或者它的某個子類來滿足這些要求。

    2.3.1DataGridViewCell的工作機制
    理解DataGridView結構的一個重要部分是理解DataGridViewCell的工作機制:

    單元格的值(A Cell's Value)
    單元格的值是其根本所在。如果單元格所在列不是綁定列,并且所在的DataGridView也不是Virtual Mode,那么它的值就由它本身所持有并維護。對于那些由綁定產生的單元格,它們壓根兒就不“知道”該持有什么值,當然也就不會去維護了;當DataGridView需要單元格的值的時候,它會到數據源中查詢該單元格應當顯示的值。在Virtual Mode下,除了會觸發(fā)CellValueNeeded事件以獲取相應單元格的值外,與數據綁定方式非常相似。在單元格級,所有這些由DataGridViewCell.GetValue() 方法來控制。
    默認情況下,單元格的值的類型為object。當一個列被綁定后,會設置它的ValueType屬性,它包含的單元格的ValueType也隨之更新。而單元格的ValueType對于下一步的格式化非常重要。

    格式化顯示(Formatting for Display)
    注意:當DataGridView需要了解“如何顯示這個單元格”時,它需要的是單元格的FormattedValue ,而不是Value。這是一個復雜的過程,因為格式化屏幕上的一些內容通常需要將它轉換為字符串。例如,盡管你將單元格的值(Value)設置為整型值155,在顯示它的時候仍需要將其格式化。單元格和其所在的列的FormattedValueType 屬性決定了顯示它時所用的類型。多數列使用字符串類型,而Image和CheckBox類型的單元格/列則使用其它類型。Image類型的單元格和列使用Image作為默認的FormattedValueType,它的內置實現了解如何去顯示一個Image。CheckBox類型的單元格/列的FormattedValueType屬性則取決于屬性ThreeState的值。在單元格級,所有這些由DataGridViewCell.GetFormattedValue()控制。

    默認情況下,DataGridView使用TypeConverter將單元格的值(Value)轉換為格式化的值(FormattedValue)。DataGridView會基于單元格的ValueType和FormattedValueType屬性來獲取合時的TypeConverter。

    對于一個單元格,FormattedValue會得到多次請求(即會在多個地方用到):繪制單元格的時候,所在列根據單元格內容自動調整大小的時候,甚至是在判斷鼠標是否經過單元格內容時。每次需要FormattedValue的時候,DataGridView會觸發(fā)CellFormatting事件,這時你就有機會修改單元格的格式化顯示了。
    如果單元格不能獲取它的格式化值,它會觸發(fā)DataError事件。

    格式化顯示單元格還包含以怎樣的首選尺寸顯示它。這個首選尺寸是由單元格的FormattedValue,填充區(qū)域(padding),附加顯示和邊框合并而成。

    繪制單元格的顯示(Painting the Display)
    在獲得FormattedValue 后,單元格將負責繪制它的內容。單元格決定了繪制過程所使用的正確樣式(參見本文檔第五章的樣式部分)并進行繪制。記?。喝绻麊卧癫蝗ダL制自己,那么該單元格將不會有任何內容得到繪制(即單元格的繪制只由它自己負責),行、列不會負責繪制任何內容,因此要確保至少要繪制單元格的背景(background),否則單元格所在的矩形區(qū)域仍然是無效的(即未經繪制)。

    解析單元格的顯示(Parsing the Display)
    用戶開始與單元格交互后,可能會編輯單元格的值。有一件事要記住,用戶編輯的實際上是單元格的FormattedValue。用戶提交所編輯的值時,FormattedValue需要轉換回單元格的值(Value),這個過程稱為解析(parsing)。在單元格級上,所有這些工作由單元格的DataGridViewCell.ParseFormattedValue(int rowIndex)方法控制。
    默認情況下,會再次使用TypeConverter來將FormattedValue解析為單元格的真實值,這時會觸發(fā)DataGridView的CellParsing事件,這時你就有機會修改單元格的解析方式了。

    如果單元格不能得到正確地解析,會觸發(fā)DataError事件。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    DataGridView控件詳細介紹

    DataGridView控件詳細介紹:1何為DataGridView 通過DataGridView控件,可以顯示和編輯表格式的數據,而這些數據可以取自多種不同類型的數據源。 DataGridView控件具有很高的的可配置性和可擴展性,提供了大量的屬性、方法和事件,可以用來對該控件的外觀和行為進行自定義。當你需要在W
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top