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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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的亮點(diǎn) PAGEREF _Toc407441198 h 6 HYPERLINK l _Toc407441199 2 DataGridView的結(jié)構(gòu) PAGEREF _Toc407441199 h 6 HYPERLINK l _Toc407441200 2.1 結(jié)構(gòu)元素(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的工作機(jī)制 PAGEREF _Toc407441203 h 7 HYPERLINK l _Toc407441204 2.3.2 常見(jiàn)問(wèn)題 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 常見(jiàn)問(wèn)題 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 常見(jiàn)問(wèn)題 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 常見(jiàn)問(wèn)題 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 常見(jiàn)問(wèn)題 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ù)輸入和驗(yàn)證的相關(guān)事件 PAGEREF _Toc407441221 h 13 HYPERLINK l _Toc407441222 4.1.1 數(shù)據(jù)驗(yàn)證相關(guān)事件的順序 PAGEREF _Toc407441222 h 13 HYPERLINK l _Toc407441223 4.1.2 驗(yàn)證數(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 關(guān)于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常見(jiàn)問(wèn)題 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 滾動(dòng)(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最佳實(shí)踐(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設(shè)置樣式動(dòng)態(tài) PAGEREF _Toc407441288 h 49 HYPERLINK l _Toc407441289 5.2風(fēng)俗畫(huà) 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用鼠標(biāo)調(diào)整大小 PAGEREF _

27、Toc407441292 h 52 HYPERLINK l _Toc407441293 5.3.3自動(dòng)調(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)整大小選項(xiàng) 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滾動(dòng)(滾動(dòng)) PAGEREF _Toc407441298 h 54 HYPERLINK l _Toc407441299 5.5.1 Scroll事件 PAGEREF _Toc407441299 h 54 HYPERLINK l _Toc407441300 5.5.2滾動(dòng)條 PAGEREF _Toc407441300 h 55 HYPERLINK l _Toc407441301 5.5.3滾動(dòng)屬性 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標(biāo)準(zhǔn)邊框樣式 PAGEREF _Toc407441305 h 56 HYPERLINK l _Toc4074413

30、06 5.10凍結(jié)的列/行 PAGEREF _Toc407441306 h 58 HYPERLINK l _Toc407441307 5.11實(shí)現(xiàn)自定義和編輯控制細(xì)胞/細(xì)胞 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補(bǔ)充綁定模式 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在虛擬模式下的最佳實(shí)踐 PAGEREF _Toc407441316 h 61 HYPERLINK l _Toc407441317 5.13容量(容量) PAGEREF _Toc407441317 h 61 HYPERLINK l _Toc407441318 6個(gè)最佳實(shí)踐(最佳做法) 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使用自動(dòng)調(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. 如何讓一個(gè)單元格不可用(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. 如何避免用戶將焦點(diǎn)設(shè)置到指定的單元格? 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,未能實(shí)現(xiàn)該效果)? PAGEREF _Toc407441331 h 67 HYPERLINK l _Toc407441332 6. 如何在單元格內(nèi)同時(shí)顯示圖標(biāo)和文本? PAGEREF _Toc407441332 h 67 HYPERLINK l _Toc407441333 7. 如何隱藏一列? PAGEREF _Toc407441333 h 71 HYPERLINK l _Toc407441334 8. 如何避

37、免用戶對(duì)列排序? PAGEREF _Toc407441334 h 71 HYPERLINK l _Toc407441335 9. 如何針對(duì)多個(gè)列排序? 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. 應(yīng)

38、在何時(shí)移除編輯控件的事件處理函數(shù)? PAGEREF _Toc407441338 h 78 HYPERLINK l _Toc407441339 12. 如何處理ComboBox列中控件的SelectIndexChanged事件? PAGEREF _Toc407441339 h 78 HYPERLINK l _Toc407441340 13. 如何通過(guò)拖放調(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時(shí))? 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. 如何在用戶編輯控件的時(shí)候(而不是在驗(yàn)證時(shí))就顯示錯(cuò)誤圖標(biāo)? PAGEREF _Toc407441346 h 84 HYPERLINK l _Toc407441347 20. 如何同時(shí)顯示綁定數(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. 如何避免用戶對(duì)列排序? PAGEREF _Toc407441352 h 92 HYPERLINK l _Toc407441353 25. 如何在點(diǎn)擊工具欄按鈕的時(shí)候?qū)?shù)據(jù)提交到數(shù)據(jù)庫(kù)? PAGEREF _Toc407441353 h 92 HYPERLINK l _Toc407441354 26. 如何在用戶刪除記錄時(shí)顯示確認(rèn)對(duì)話框? PAGEREF _Toc407441354 h 92DataGridView控件DataGr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論