DataGridView控件
DataGridView是用于Windows Froms 2.0的新网格控件。它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性。
关于本文档:
本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。
本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。
大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。注意,某些问题会由于知识点的关联性重复出现在多个章节。这些问题、答案及其附带的示例代码都包含在本文档的附录部分。
注意:本文档的大部分内容来自MSDN中DataGridView控件的相关文档。
内容
1.1 DataGridView和DataGrid 之间的区别... 4
2.3.1 DataGridViewCell的工作机制... 7
3.1 DataGridViewTextBoxColumn. 11
3.2 DataGridViewCheckBoxColumn. 12
3.3 DataGridViewImageColumn. 12
3.4 DataGridViewButtonColumn. 13
3.5 DataGridViewComboBoxColumn. 13
3.5.1 DataError与ComboBox列... 13
3.6 DataGridViewLinkColumn. 14
4.2.2 DataSourceNullValue属性... 19
5.1.1 The DataGridViewCellStyle Class 24
5.1.2 Using DataGridViewCellStyle Objects 24
5.1.4 Setting Styles Dynamically. 28
5.2.2 Row Pre Paint and Post Paint 29
5.3.1 Sizing Options in the Windows Forms DataGridView Control 30
5.3.2 Resizing with the Mouse. 31
5.3.4 Programmatic Resizing. 33
5.3.5 Customizing Content-based Sizing Behavior. 34
5.3.6 Content-based Sizing Options 34
5.4.1 Programmatic Selection. 35
5.6.1 Programmatic Sorting. 37
5.7.1 Standard Border Styles 39
5.7.2 Advanced Border Styles 39
5.11 Implementing Custom cells and editing controls/cells 41
5.11.1 IDataGridViewEditingControl 42
5.11.2 IDataGridViewEditingCell 42
5.12.1 Bound Mode and Virtual Mode. 42
5.12.2 Supplementing Bound Mode. 42
5.12.3 Replacing Bound Mode. 43
5.12.5 Best Practices in Virtual Mode. 44
6.1 Using Cell Styles Efficiently. 45
6.2 Using Shortcut Menus Efficiently. 45
6.3 Using Automatic Resizing Efficiently. 45
6.4 Using the Selected Cells, Rows, and Columns Collections Efficiently. 46
6.6 Preventing Rows from Becoming Unshared. 47
4. 如何使所有单元格总是显示控件(不论它是否处于编辑状态)?. 51
5. Why does the cell text show up with “square” characters where they should be new lines?. 51
12. 如何处理ComboBox列中ComboBox控件的SelectIndexChanged事件?. 58
14. 如何调整最后一列的宽度使其占据网格的剩余客户区?... 60
16. 如何使Image列不显示任何图像(字段值为null时)?. 61
17. 如何能够在ComboBox类型的单元格中输入数据?. 61
19. 如何在用户编辑控件的时候(而不是在验证时)就显示错误图标?. 62
21. How do I show data that comes from two tables?. 66
23. 如何在同一DataGridView中显示主从表?... 68
25. 如何在点击工具栏按钮的时候将数据提交到数据库?... 68