winform的DataGridView控件使用大全_第1頁
winform的DataGridView控件使用大全_第2頁
winform的DataGridView控件使用大全_第3頁
winform的DataGridView控件使用大全_第4頁
winform的DataGridView控件使用大全_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、DataGridView控件使用大全目錄 TOC o 1-3 h z u HYPERLINK l _Toc407441194 DataGridView控件使用大全 PAGEREF _Toc407441194 h 1 HYPERLINK l _Toc407441195 DataGridView控件 PAGEREF _Toc407441195 h 4 HYPERLINK l _Toc407441196 1何為DataGridView PAGEREF _Toc407441196 h 5 HYPERLINK l _Toc407441197 1.1 DataGridView和DataGrid 之間的區(qū)別

2、 PAGEREF _Toc407441197 h 5 HYPERLINK l _Toc407441198 1.2 DataGridView的亮點 PAGEREF _Toc407441198 h 6 HYPERLINK l _Toc407441199 2 DataGridView的結(jié)構 PAGEREF _Toc407441199 h 6 HYPERLINK l _Toc407441200 2.1 結(jié)構元素(Architecture Elements) PAGEREF _Toc407441200 h 7 HYPERLINK l _Toc407441201 2.2 單元格和組(Cells and B

3、ands) PAGEREF _Toc407441201 h 7 HYPERLINK l _Toc407441202 2.3 DataGridView的單元格 (DataGridViewCell) PAGEREF _Toc407441202 h 7 HYPERLINK l _Toc407441203 2.3.1 DataGridViewCell的工作機制 PAGEREF _Toc407441203 h 7 HYPERLINK l _Toc407441204 2.3.2 常見問題 PAGEREF _Toc407441204 h 8 HYPERLINK l _Toc407441205 2.4 Dat

4、aGridView的列(DataGridViewColumn) PAGEREF _Toc407441205 h 9 HYPERLINK l _Toc407441206 2.5 DataGridView的編輯控件(Editing Controls) PAGEREF _Toc407441206 h 9 HYPERLINK l _Toc407441207 2.6 DataGridViewRow PAGEREF _Toc407441207 h 9 HYPERLINK l _Toc407441208 2.6.1 常見問題 PAGEREF _Toc407441208 h 10 HYPERLINK l _T

5、oc407441209 3 列/單元格類型揭密(column/cell types) PAGEREF _Toc407441209 h 10 HYPERLINK l _Toc407441210 3.1 DataGridViewTextBoxColumn PAGEREF _Toc407441210 h 11 HYPERLINK l _Toc407441211 3.1.1 常見問題 PAGEREF _Toc407441211 h 11 HYPERLINK l _Toc407441212 3.2 DataGridViewCheckBoxColumn PAGEREF _Toc407441212 h 11

6、 HYPERLINK l _Toc407441213 3.3 DataGridViewImageColumn PAGEREF _Toc407441213 h 11 HYPERLINK l _Toc407441214 3.3.1 常見問題 PAGEREF _Toc407441214 h 11 HYPERLINK l _Toc407441215 3.4DataGridViewButtonColumn PAGEREF _Toc407441215 h 12 HYPERLINK l _Toc407441216 3.5 DataGridViewComboBoxColumn PAGEREF _Toc4074

7、41216 h 12 HYPERLINK l _Toc407441217 3.5.1 DataError事件和ComboBox列 PAGEREF _Toc407441217 h 12 HYPERLINK l _Toc407441218 3.5.2 常見問題 PAGEREF _Toc407441218 h 12 HYPERLINK l _Toc407441219 3.6 DataGridViewLinkColumn PAGEREF _Toc407441219 h 12 HYPERLINK l _Toc407441220 4 操作數(shù)據(jù)(Working with Data) PAGEREF _Toc

8、407441220 h 13 HYPERLINK l _Toc407441221 4.1 數(shù)據(jù)輸入和驗證的相關事件 PAGEREF _Toc407441221 h 13 HYPERLINK l _Toc407441222 4.1.1 數(shù)據(jù)驗證相關事件的順序 PAGEREF _Toc407441222 h 13 HYPERLINK l _Toc407441223 4.1.2 驗證數(shù)據(jù) PAGEREF _Toc407441223 h 14 HYPERLINK l _Toc407441224 4.1.3 在新行中的數(shù)據(jù)輸入(Data Entry in the New Row) PAGEREF _To

9、c407441224 h 14 HYPERLINK l _Toc407441225 4.2 關于Null值 PAGEREF _Toc407441225 h 16 HYPERLINK l _Toc407441226 4.2.1 NullValue屬性 PAGEREF _Toc407441226 h 16 HYPERLINK l _Toc407441227 4.2.2 DataSourceNullValue屬性 PAGEREF _Toc407441227 h 16 HYPERLINK l _Toc407441228 4.3 DataError事件 PAGEREF _Toc407441228 h 1

10、7 HYPERLINK l _Toc407441229 DataError的上下文: PAGEREF _Toc407441229 h 17 HYPERLINK l _Toc407441230 4.4 數(shù)據(jù)綁定模式(Databound modes) PAGEREF _Toc407441230 h 18 HYPERLINK l _Toc407441231 4.4.1 非綁定模式(Unbound Mode) PAGEREF _Toc407441231 h 18 HYPERLINK l _Toc407441232 4.4.2 綁定模式(Bound Mode) PAGEREF _Toc407441232

11、 h 18 HYPERLINK l _Toc407441233 4.4.3 虛擬模式 PAGEREF _Toc407441233 h 19 HYPERLINK l _Toc407441234 4.4.4 混合模式 綁定與非綁定模式 PAGEREF _Toc407441234 h 19 HYPERLINK l _Toc407441235 4.4.5常見問題 PAGEREF _Toc407441235 h 19 HYPERLINK l _Toc407441236 5特性綜覽(Overview of features) PAGEREF _Toc407441236 h 20 HYPERLINK l _

12、Toc407441237 5.1 樣式(Styling) PAGEREF _Toc407441237 h 20 HYPERLINK l _Toc407441238 5.1.1 The DataGridViewCellStyle Class PAGEREF _Toc407441238 h 20 HYPERLINK l _Toc407441239 5.1.2 Using DataGridViewCellStyle Objects PAGEREF _Toc407441239 h 21 HYPERLINK l _Toc407441240 5.1.3 Style Inheritance PAGEREF

13、_Toc407441240 h 22 HYPERLINK l _Toc407441241 5.1.4 Setting Styles Dynamically PAGEREF _Toc407441241 h 24 HYPERLINK l _Toc407441242 5.2 Custom painting PAGEREF _Toc407441242 h 24 HYPERLINK l _Toc407441243 5.2.1 Paint Parts PAGEREF _Toc407441243 h 25 HYPERLINK l _Toc407441244 5.2.2 Row Pre Paint and P

14、ost Paint PAGEREF _Toc407441244 h 26 HYPERLINK l _Toc407441245 5.3 Autosizing PAGEREF _Toc407441245 h 26 HYPERLINK l _Toc407441246 5.3.1Sizing Options in the Windows Forms DataGridView Control PAGEREF _Toc407441246 h 27 HYPERLINK l _Toc407441247 5.3.2 Resizing with the Mouse PAGEREF _Toc407441247 h

15、29 HYPERLINK l _Toc407441248 5.3.3 Automatic Sizing PAGEREF _Toc407441248 h 29 HYPERLINK l _Toc407441249 5.3.4 Programmatic Resizing PAGEREF _Toc407441249 h 30 HYPERLINK l _Toc407441250 5.3.5 Customizing Content-based Sizing Behavior PAGEREF _Toc407441250 h 31 HYPERLINK l _Toc407441251 5.3.6 Content

16、-based Sizing Options PAGEREF _Toc407441251 h 31 HYPERLINK l _Toc407441252 5.4 Selection modes PAGEREF _Toc407441252 h 31 HYPERLINK l _Toc407441253 5.4.1 Programmatic Selection PAGEREF _Toc407441253 h 32 HYPERLINK l _Toc407441254 5.5 滾動(Scrolling) PAGEREF _Toc407441254 h 33 HYPERLINK l _Toc407441255

17、 5.5.1 Scroll event PAGEREF _Toc407441255 h 33 HYPERLINK l _Toc407441256 5.5.2 Scroll bars PAGEREF _Toc407441256 h 33 HYPERLINK l _Toc407441257 5.5.3 Scrolling Properties PAGEREF _Toc407441257 h 33 HYPERLINK l _Toc407441258 5.6 Sorting PAGEREF _Toc407441258 h 33 HYPERLINK l _Toc407441259 5.6.1 Progr

18、ammatic Sorting PAGEREF _Toc407441259 h 34 HYPERLINK l _Toc407441260 5.6.2 Custom Sorting PAGEREF _Toc407441260 h 35 HYPERLINK l _Toc407441261 5.6.3Common questions and scenarios PAGEREF _Toc407441261 h 35 HYPERLINK l _Toc407441262 5.7 Border styles PAGEREF _Toc407441262 h 36 HYPERLINK l _Toc4074412

19、63 5.7.1 Standard Border Styles PAGEREF _Toc407441263 h 36 HYPERLINK l _Toc407441264 5.7.2 Advanced Border Styles PAGEREF _Toc407441264 h 36 HYPERLINK l _Toc407441265 5.8 Enter-Edit modes PAGEREF _Toc407441265 h 37 HYPERLINK l _Toc407441266 5.9 Clipboard copy modes PAGEREF _Toc407441266 h 38 HYPERLI

20、NK l _Toc407441267 5.10 Frozen columns/rows PAGEREF _Toc407441267 h 39 HYPERLINK l _Toc407441268 5.11 Implementing Custom cells and editing controls/cells PAGEREF _Toc407441268 h 39 HYPERLINK l _Toc407441269 5.11.1 IDataGridViewEditingControl PAGEREF _Toc407441269 h 39 HYPERLINK l _Toc407441270 5.11

21、.2 IDataGridViewEditingCell PAGEREF _Toc407441270 h 39 HYPERLINK l _Toc407441271 5.12 Virtual mode PAGEREF _Toc407441271 h 39 HYPERLINK l _Toc407441272 5.12.1 Bound Mode and Virtual Mode PAGEREF _Toc407441272 h 40 HYPERLINK l _Toc407441273 5.12.2 Supplementing Bound Mode PAGEREF _Toc407441273 h 40 H

22、YPERLINK l _Toc407441274 5.12.3 Common questions and scenarios PAGEREF _Toc407441274 h 40 HYPERLINK l _Toc407441275 5.12.4 Replacing Bound Mode PAGEREF _Toc407441275 h 40 HYPERLINK l _Toc407441276 5.12.5 Virtual-Mode Events PAGEREF _Toc407441276 h 40 HYPERLINK l _Toc407441277 5.12.6 Best Practices i

23、n Virtual Mode PAGEREF _Toc407441277 h 42 HYPERLINK l _Toc407441278 5.13 容量(Capacity) PAGEREF _Toc407441278 h 42 HYPERLINK l _Toc407441279 6最佳實踐(Best Practices) PAGEREF _Toc407441279 h 42 HYPERLINK l _Toc407441280 6.1 Using Cell Styles Efficiently PAGEREF _Toc407441280 h 42 HYPERLINK l _Toc407441281

24、 6.2 Using Shortcut Menus Efficiently PAGEREF _Toc407441281 h 43 HYPERLINK l _Toc407441282 6.3 Using Automatic Resizing Efficiently PAGEREF _Toc407441282 h 43 HYPERLINK l _Toc407441283 6.4 Using the Selected Cells, Rows, and Columns Collections Efficiently PAGEREF _Toc407441283 h 44 HYPERLINK l _Toc

25、407441284 6.5 Using Shared Rows PAGEREF _Toc407441284 h 44 HYPERLINK l _Toc407441285 6.6 Preventing Rows from Becoming Unshared PAGEREF _Toc407441285 h 45 HYPERLINK l _Toc407441286 5.1.3樣式繼承 PAGEREF _Toc407441286 h 47 HYPERLINK l _Toc407441287 1。 DataGridViewCell.Style PAGEREF _Toc407441287 h 48 HYP

26、ERLINK l _Toc407441288 5.1.4設置樣式動態(tài) PAGEREF _Toc407441288 h 49 HYPERLINK l _Toc407441289 5.2風俗畫 PAGEREF _Toc407441289 h 49 HYPERLINK l _Toc407441290 5.2.1油漆件 PAGEREF _Toc407441290 h 49 HYPERLINK l _Toc407441291 5.3 Autosizing PAGEREF _Toc407441291 h 50 HYPERLINK l _Toc407441292 5.3.2用鼠標調(diào)整大小 PAGEREF _

27、Toc407441292 h 52 HYPERLINK l _Toc407441293 5.3.3自動調(diào)整大小 PAGEREF _Toc407441293 h 52 HYPERLINK l _Toc407441294 5.3.5自定義基于內(nèi)容的調(diào)整大小行為 PAGEREF _Toc407441294 h 53 HYPERLINK l _Toc407441295 5.3.6基于內(nèi)容的調(diào)整大小選項 PAGEREF _Toc407441295 h 53 HYPERLINK l _Toc407441296 5.4選擇模式 PAGEREF _Toc407441296 h 54 HYPERLINK l _

28、Toc407441297 5.4.1編程選擇 PAGEREF _Toc407441297 h 54 HYPERLINK l _Toc407441298 5.5滾動(滾動) PAGEREF _Toc407441298 h 54 HYPERLINK l _Toc407441299 5.5.1 Scroll事件 PAGEREF _Toc407441299 h 54 HYPERLINK l _Toc407441300 5.5.2滾動條 PAGEREF _Toc407441300 h 55 HYPERLINK l _Toc407441301 5.5.3滾動屬性 PAGEREF _Toc407441301

29、 h 55 HYPERLINK l _Toc407441302 5.6排序 PAGEREF _Toc407441302 h 55 HYPERLINK l _Toc407441303 DataGridViewColumnSortMode值描述 PAGEREF _Toc407441303 h 55 HYPERLINK l _Toc407441304 5.6.2自定義排序 PAGEREF _Toc407441304 h 56 HYPERLINK l _Toc407441305 5.7.1標準邊框樣式 PAGEREF _Toc407441305 h 56 HYPERLINK l _Toc4074413

30、06 5.10凍結(jié)的列/行 PAGEREF _Toc407441306 h 58 HYPERLINK l _Toc407441307 5.11實現(xiàn)自定義和編輯控制細胞/細胞 PAGEREF _Toc407441307 h 58 HYPERLINK l _Toc407441308 5.11.1 IDataGridViewEditingControl PAGEREF _Toc407441308 h 59 HYPERLINK l _Toc407441309 5.11.2 IDataGridViewEditingCell PAGEREF _Toc407441309 h 59 HYPERLINK l _

31、Toc407441310 5.12虛擬模式 PAGEREF _Toc407441310 h 59 HYPERLINK l _Toc407441311 5.12.1綁定模式和虛擬模式 PAGEREF _Toc407441311 h 59 HYPERLINK l _Toc407441312 5.12.2補充綁定模式 PAGEREF _Toc407441312 h 59 HYPERLINK l _Toc407441313 5.12.5虛擬模式事件 PAGEREF _Toc407441313 h 59 HYPERLINK l _Toc407441314 CellContextMenuStripNeed

32、ed PAGEREF _Toc407441314 h 60 HYPERLINK l _Toc407441315 RowHeightInfoNeeded PAGEREF _Toc407441315 h 60 HYPERLINK l _Toc407441316 5.12.6在虛擬模式下的最佳實踐 PAGEREF _Toc407441316 h 61 HYPERLINK l _Toc407441317 5.13容量(容量) PAGEREF _Toc407441317 h 61 HYPERLINK l _Toc407441318 6個最佳實踐(最佳做法) PAGEREF _Toc407441318 h

33、 61 HYPERLINK l _Toc407441319 6.1使用高效單元格樣式 PAGEREF _Toc407441319 h 61 HYPERLINK l _Toc407441320 6.2使用高效快捷菜單 PAGEREF _Toc407441320 h 61 HYPERLINK l _Toc407441321 6.3使用自動調(diào)整大小高效 PAGEREF _Toc407441321 h 61 HYPERLINK l _Toc407441322 6.5使用共享行 PAGEREF _Toc407441322 h 62 HYPERLINK l _Toc407441323 6.6防止行成為非共

34、享 PAGEREF _Toc407441323 h 63 HYPERLINK l _Toc407441324 附錄 A FAQ PAGEREF _Toc407441324 h 64 HYPERLINK l _Toc407441325 1. 如何使指定的單元格不可編輯? PAGEREF _Toc407441325 h 64 HYPERLINK l _Toc407441326 2. 如何讓一個單元格不可用(disable)? PAGEREF _Toc407441326 h 64 HYPERLINK l _Toc407441327 DataGridViewDisableButtonCell cell

35、 = PAGEREF _Toc407441327 h 65 HYPERLINK l _Toc407441328 SolidBrush cellBackground = PAGEREF _Toc407441328 h 66 HYPERLINK l _Toc407441329 3. 如何避免用戶將焦點設置到指定的單元格? PAGEREF _Toc407441329 h 67 HYPERLINK l _Toc407441330 4. 如何使所有單元格總是顯示控件(不論它是否處于編輯狀態(tài))? PAGEREF _Toc407441330 h 67 HYPERLINK l _Toc407441331 5.

36、 Why does the cell text show up with “square” characters where they should be new lines(TODO,未能實現(xiàn)該效果)? PAGEREF _Toc407441331 h 67 HYPERLINK l _Toc407441332 6. 如何在單元格內(nèi)同時顯示圖標和文本? PAGEREF _Toc407441332 h 67 HYPERLINK l _Toc407441333 7. 如何隱藏一列? PAGEREF _Toc407441333 h 71 HYPERLINK l _Toc407441334 8. 如何避

37、免用戶對列排序? PAGEREF _Toc407441334 h 71 HYPERLINK l _Toc407441335 9. 如何針對多個列排序? PAGEREF _Toc407441335 h 71 HYPERLINK l _Toc407441336 CompareResult = System.String.Compare( PAGEREF _Toc407441336 h 78 HYPERLINK l _Toc407441337 10. 如何為編輯控件添加事件處理函數(shù)? PAGEREF _Toc407441337 h 78 HYPERLINK l _Toc407441338 11. 應

38、在何時移除編輯控件的事件處理函數(shù)? PAGEREF _Toc407441338 h 78 HYPERLINK l _Toc407441339 12. 如何處理ComboBox列中控件的SelectIndexChanged事件? PAGEREF _Toc407441339 h 78 HYPERLINK l _Toc407441340 13. 如何通過拖放調(diào)整行的順序? PAGEREF _Toc407441340 h 79 HYPERLINK l _Toc407441341 14. 如何調(diào)整最后一列的寬度使其占據(jù)網(wǎng)格的剩余客戶區(qū)? PAGEREF _Toc407441341 h 81 HYPERL

39、INK l _Toc407441342 15. 如何讓TextBox類型的單元格支持換行? PAGEREF _Toc407441342 h 81 HYPERLINK l _Toc407441343 16. 如何使Image列不顯示任何圖像(字段值為null時)? PAGEREF _Toc407441343 h 82 HYPERLINK l _Toc407441344 17. 如何能夠在ComboBox類型的單元格中輸入數(shù)據(jù)? PAGEREF _Toc407441344 h 82 HYPERLINK l _Toc407441345 18. How do I have a combo box co

40、lumn display a sub set of data based upon the value of a different combo box column(TODO)? PAGEREF _Toc407441345 h 83 HYPERLINK l _Toc407441346 19. 如何在用戶編輯控件的時候(而不是在驗證時)就顯示錯誤圖標? PAGEREF _Toc407441346 h 84 HYPERLINK l _Toc407441347 20. 如何同時顯示綁定數(shù)據(jù)和非綁定數(shù)據(jù)? PAGEREF _Toc407441347 h 87 HYPERLINK l _Toc4074

41、41348 21. How do I show data that comes from two tables(TODO)? PAGEREF _Toc407441348 h 89 HYPERLINK l _Toc407441349 22. 如何顯示主從表? PAGEREF _Toc407441349 h 89 HYPERLINK l _Toc407441350 MessageBox.Show(To run this example, replace the value of the + PAGEREF _Toc407441350 h 92 HYPERLINK l _Toc407441351 2

42、3. 如何在同一DataGridView中顯示主從表? PAGEREF _Toc407441351 h 92 HYPERLINK l _Toc407441352 24. 如何避免用戶對列排序? PAGEREF _Toc407441352 h 92 HYPERLINK l _Toc407441353 25. 如何在點擊工具欄按鈕的時候?qū)?shù)據(jù)提交到數(shù)據(jù)庫? PAGEREF _Toc407441353 h 92 HYPERLINK l _Toc407441354 26. 如何在用戶刪除記錄時顯示確認對話框? PAGEREF _Toc407441354 h 92DataGridView控件DataGr

43、idView是用于Windows Froms 2.0的新網(wǎng)格控件。它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我們的用戶需要的特性。關于本文檔:本文檔不準備面面俱到地介紹DataGridView,而是著眼于深入地介紹一些技術點的高級特性。本文檔按邏輯分為5個章節(jié),首先是結(jié)構和特性的概覽,其次是內(nèi)置的列/單元格類型的介紹,再次是數(shù)據(jù)操作相關的內(nèi)容,然后是主要特性的綜述,最后是最佳實踐。大部分章節(jié)含有一個“Q & A”部分,來回答該章節(jié)相關的一些常見問題。注意,某些問題會由于知識點的關聯(lián)性重復出現(xiàn)在多個章節(jié)。這些問題、答案及其附帶的示例代碼都包含在本文檔的附錄部分。1

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

45、Grid更多的功能;但DataGrid仍然得到保留,以備向后兼容和將來使用。如果你要在兩者中選擇,可以參考下面給出的DataGrid 和DataGridView之間區(qū)別的細節(jié)信息。1.1 DataGridView和DataGrid 之間的區(qū)別DataGridView提供了大量的DataGrid所不具備的基本功能和高級功能。此外,DataGridView 的結(jié)構使得它較之DataGrid控件更容易擴展和自定義。下表描述了DataGridView提供而DataGrid未提供的幾個主要功能。DataGridView功能描述多種列類型與DataGrid相比,DataGridView 提供了更多的內(nèi)置列

46、類型。這些列類型能夠滿足大部分常見需要,而且比DataGrid中的列類型易于擴展或替換。多種數(shù)據(jù)顯示方式DataGrid僅限于顯示外部數(shù)據(jù)源的數(shù)據(jù)。而DataGridView則能夠顯示非綁定的數(shù)據(jù),綁定的數(shù)據(jù)源,或者同時顯示綁定和非綁定的數(shù)據(jù)。你也可以在DataGridView中實現(xiàn)virtual mode,實現(xiàn)自定義的數(shù)據(jù)管理。用于自定義數(shù)據(jù)顯示的多種方式DataGridView提供了很多屬性和事件,用于數(shù)據(jù)的格式化和顯示。比如,你可以根據(jù)單元格、行和列的內(nèi)容改變其外觀,或者使用一種類型的數(shù)據(jù)替代另一種類型的數(shù)據(jù)。用于更改單元格、行、列、表頭外觀和行為的多個選項DataGridView使你能

47、夠以多種方式操作單個網(wǎng)格組件。比如,你可以凍結(jié)行和列,避免它們因滾動而不可見;隱藏行、列、表頭;改變行、列、表頭尺寸的調(diào)整方式;為單個的單元格、行和列提供工具提示(ToolTip)和快捷菜單。唯一的一個DataGrid提供而DataGridView未提供的特性是兩個相關表中數(shù)據(jù)的分層次顯示(比如常見的主從表顯示)。你必須使用兩個DataGridView來顯示具有主從關系的兩個表的數(shù)據(jù)。1.2 DataGridView的亮點下表著重顯示了DataGridView的主要特性,稍后會介紹它們的詳細信息。DataGridView控件特性描述多種列類型DataGridView提供有TextBox、Che

48、ckBox、Image、Button、ComboBox和Link類型的列及相應的單元格類型。多種數(shù)據(jù)顯示方式DataGrid僅限于顯示外部數(shù)據(jù)源的數(shù)據(jù)。而DataGridView則能夠顯示非綁定的數(shù)據(jù),綁定的數(shù)據(jù)源,或者同時顯示綁定和非綁定的數(shù)據(jù)。你也可以在DataGridView中實現(xiàn)virtual mode,實現(xiàn)自定義的數(shù)據(jù)管理。自定義數(shù)據(jù)的顯示和操作的多種方式DataGridView提供了很多屬性和事件,用于數(shù)據(jù)的格式化和顯示。此外,DataGridView提供了操作數(shù)據(jù)的多種方式,比如,你可以:對數(shù)據(jù)排序,并顯示相應的排序符號(帶方向的箭頭表示升降序)對行、列和單元格的多種選擇模式;多

49、項選擇和單項選擇以多種格式將數(shù)據(jù)拷貝到剪貼板,包括text,CSV (以逗號隔開的值) 和 HTML改變用戶編輯單元格內(nèi)容的方式用于更改單元格、行、列、表頭外觀和行為的多個選項DataGridView使你能夠以多種方式操作單個網(wǎng)格組件。比如,你可以:凍結(jié)行和列,避免它們因滾動而不可見;隱藏行、列、表頭;改變行、列、表頭尺寸的調(diào)整方式;改變用戶對行、列、單元格的選擇模式;為單個的單元格、行和列提供工具提示(ToolTip)和快捷菜單。自定義單元格、行和列的邊框樣式。提供豐富的可擴展性的支持DataGridView提供易于對網(wǎng)格進行擴展和自定義的基礎結(jié)構,比如:處理自定義的繪制事件可以為單元格、列

50、和行提供自定義的觀感;繼承一個內(nèi)置的單元格類型以為其提供更多的行為;實現(xiàn)自定義的接口以提供新的編輯體驗。2 DataGridView的結(jié)構DataGridView及其相關類被設計為用于顯示和編輯表格數(shù)據(jù)式數(shù)據(jù)的靈活的、可擴展的體系。這些類都位于system.Windows.Forms命名空間,它們的名稱也都有共同的前綴DataGridView。2.1 結(jié)構元素(Architecture Elements)主要的DataGridView相關類繼承自DataGridViewElement類。DataGridViewElement類有兩個屬性,一是DataGridView,該屬性提供了對其所屬的Da

51、taGridView的引用;二是State,該屬性表示當前的狀態(tài),其值為DataGridViewElementStates枚舉,該枚舉支持位運算,這意味著可以設置組合狀態(tài)。2.2 單元格和組(Cells and Bands)DataGridView由兩種基本的對象組成:單元格(cell)和組(band)。所有的單元格都繼承自DataGridViewCell基類。 兩種類型的組(或稱集合)DataGridViewColumn和DataGridViewRow都繼承自DataGridViewBand 基類,表示一組結(jié)合在一起的單元格。DataGridView會與一些類進行互操作,但最常打交道的則是如

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

53、View的CurrentCell屬性訪問當前的單元格。DataGridViewCell類圖Cell相關類和屬性DataGridViewCell是一個抽象基類,所有的單元格類型都繼承于此。DataGridViewCell及其繼承類型并不是Windows Forms控件,但其中一些宿主于Windows Forms控件。單元格支持的編輯功能通常都由其宿主控件來處理。DataGridViewCell對象不會像Windows Forms控件那樣控制自己的外觀和繪制(painting)特征,相反的,DataGridView會負責其包含的單元格的外觀。通過DataGridView 控件的屬性和事件,你可以深

54、刻地影響單元格的外觀和行為。如果你對單元格定制有特殊要求,超出了DataGridView提供的功能,可以繼承DataGridViewCell或者它的某個子類來滿足這些要求。2.3.1 DataGridViewCell的工作機制理解DataGridView結(jié)構的一個重要部分是理解DataGridViewCell的工作機制:單元格的值(A Cells Value)單元格的值是其根本所在。如果單元格所在列不是綁定列,并且所在的DataGridView也不是Virtual Mode,那么它的值就由它本身所持有并維護。對于那些由綁定產(chǎn)生的單元格,它們壓根兒就不“知道”該持有什么值,當然也就不會去維護了;

55、當DataGridView需要單元格的值的時候,它會到數(shù)據(jù)源中查詢該單元格應當顯示的值。在Virtual Mode下,除了會觸發(fā)CellValueNeeded事件以獲取相應單元格的值外,與數(shù)據(jù)綁定方式非常相似。在單元格級,所有這些由DataGridViewCell.GetValue() 方法來控制。默認情況下,單元格的值的類型為object。當一個列被綁定后,會設置它的ValueType屬性,它包含的單元格的ValueType也隨之更新。而單元格的ValueType對于下一步的格式化非常重要。格式化顯示(Formatting for Display)注意:當DataGridView需要了解“如

56、何顯示這個單元格”時,它需要的是單元格的FormattedValue,而不是Value。這是一個復雜的過程,因為格式化屏幕上的一些內(nèi)容通常需要將它轉(zhuǎn)換為字符串。例如,盡管你將單元格的值(Value)設置為整型值155,在顯示它的時候仍需要將其格式化。單元格和其所在的列的FormattedValueType 屬性決定了顯示它時所用的類型。多數(shù)列使用字符串類型,而Image和CheckBox類型的單元格/列則使用其它類型。Image類型的單元格和列使用Image作為默認的FormattedValueType,它的內(nèi)置實現(xiàn)了解如何去顯示一個Image。CheckBox類型的單元格/列的Formatt

57、edValueType屬性則取決于屬性ThreeState的值。在單元格級,所有這些由DataGridViewCell.GetFormattedValue()控制。默認情況下,DataGridView使用TypeConverter將單元格的值(Value)轉(zhuǎn)換為格式化的值(FormattedValue)。DataGridView會基于單元格的ValueType和FormattedValueType屬性來獲取合時的TypeConverter。對于一個單元格,F(xiàn)ormattedValue會得到多次請求(即會在多個地方用到):繪制單元格的時候,所在列根據(jù)單元格內(nèi)容自動調(diào)整大小的時候,甚至是在判斷鼠標

58、是否經(jīng)過單元格內(nèi)容時。每次需要FormattedValue的時候,DataGridView會觸發(fā)CellFormatting事件,這時你就有機會修改單元格的格式化顯示了。如果單元格不能獲取它的格式化值,它會觸發(fā)DataError事件。格式化顯示單元格還包含以怎樣的首選尺寸顯示它。這個首選尺寸是由單元格的FormattedValue,填充區(qū)域(padding),附加顯示和邊框合并而成。繪制單元格的顯示(Painting the Display)在獲得FormattedValue 后,單元格將負責繪制它的內(nèi)容。單元格決定了繪制過程所使用的正確樣式(參見本文檔第五章的樣式部分)并進行繪制。記住:如果

59、單元格不去繪制自己,那么該單元格將不會有任何內(nèi)容得到繪制(即單元格的繪制只由它自己負責),行、列不會負責繪制任何內(nèi)容,因此要確保至少要繪制單元格的背景(background),否則單元格所在的矩形區(qū)域仍然是無效的(即未經(jīng)繪制)。解析單元格的顯示(Parsing the Display)用戶開始與單元格交互后,可能會編輯單元格的值。有一件事要記住,用戶編輯的實際上是單元格的FormattedValue。用戶提交所編輯的值時,F(xiàn)ormattedValue需要轉(zhuǎn)換回單元格的值(Value),這個過程稱為解析(parsing)。在單元格級上,所有這些工作由單元格的DataGridViewCell.Pa

60、rseFormattedValue(int rowIndex)方法控制。默認情況下,會再次使用TypeConverter來將FormattedValue解析為單元格的真實值,這時會觸發(fā)DataGridView的CellParsing事件,這時你就有機會修改單元格的解析方式了。.如果單元格不能得到正確地解析,會觸發(fā)DataError事件。2.3.2 常見問題1) HYPERLINK blogs.cc2/ l _How_do_I_prevent a particular cell 如何使指定的單元格不可編輯?2) HYPERLINK blogs.cc2/ l _How_do_I_disable a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論