代码改变世界

DataGridView常见用法和FAQ汇总

2006-12-07 15:48  Anders Cui  阅读(37467)  评论(56编辑  收藏  举报

    前段时间在项目中用到了WinForm,其中最复杂的控件当属DataGridView了,特别喜欢它那高度的可配置性(提供了大量的属性,方法和事件)、丰富的内置列类型,而且易于扩展,对性能问题也提供了良好的解决方案。

    不过最初看着它那数以百计的方法、属性、事件,感到一阵眩晕,不知如何下手。幸运地是,很快我就找到了一个网站,windowsforms.net,这也是WinForm的官方站点,这里有不少相关的文章,FAQ,以及不错的论坛,这个论坛里,你的问题很可能会是微软的开发人员为你回答的,那些回答也很到位。

    在其中找到了关于DGV的FAQ,更好的是他们提供了DGV的文档和示例。该文档共有六章和一个附录,详细的解释了DGV的结构,内置列/单元格类型,数据操作,主要特性和最佳实践,最后提供了二十余个FAQ问题。我就是根据该文档,一步步逐渐了解DGV的。实际上,该文档的很多内容来自MSDN,而且限于篇幅,有很多地方也不如MSDN详细,所以最好是用本文档作纲要,结合MSDN来学习。

    也许,对于很多开发人员来说,最有用的是FAQ部分,因为开发过程中,可能没有很多时间去全面了解DGV,而只是需要它的一个特定功能,这时建议先看看FAQ部分有没有你想要的答案;如果要全面了解DGV,建议按照该文档的组织结构,去逐步了解它。

    现在网上全面介绍DGV的地方好像不太多,尤其是中文开发社区,大都是介绍DGV的某种特性或用法,所以我想把这个文档翻译一下。翻译过程中,感觉还是比较困难,虽然自己会时常看一些英文文章,但看懂和表达出来还是有很大不同,导致翻译进度也比较慢,所以只翻译了其中的四章和FAQ部分,剩下的两章有时间再补充吧。

    另外,我也尝试了文档中的绝大部分代码,并且用菜单项来表示文档的章节结构,这样在看某一章时,可以很快找到相关的演示代码。我把这些也一块拿出来,大部分都是些很简单的代码,很容易看懂。文档中用到的数据库是Northwind,在运行程序前,请先将Settings.settings中的连接字符串配置正确。

    下面是FAQ的主要内容:

    1、如何使指定的单元格不可编辑?
    
2、如何让一个单元格不可用?
    
3、如何避免用户将焦点设置到指定的单元格?
    
4、如何使所有单元格总是显示编辑控件?
    
5、如何在单元格内同时显示图标和文本?
    
6、如何隐藏一列?
    
7、如何避免用户对列排序?
    
8、如何针对多个列排序?
    
9、如何为编辑控件添加事件处理函数?
    
10、应在何时移除编辑控件的事件处理函数?
    
11、如何处理ComboBox列中ComboBox控件的SelectIndexChanged事件?
    
12、如何通过拖放调整行的顺序?
    
13、如何调整最后一列的宽度使其占据网格的剩余客户区?
    
14、如何让TextBox类型的单元格支持换行?
    
15、如何使Image列不显示任何图像(字段值为null时)?
    
16、如何能够在ComboBox类型的单元格中输入数据?
    
17、如何在用户编辑控件的时候(而不是在验证时)就显示错误图标?
    
18、如何同时显示绑定数据和非绑定数据?
    
19、如何显示主从表?
    
20、如何在同一DataGridView中显示主从表?
    
21、如何避免用户对列排序?
    
22、如何在点击工具栏按钮的时候将数据提交到数据库?
    
23、如何在用户删除记录时显示确认对话框?

    如果在这个网站和MSDN都没有找到想要的东西,可以去codeproject看看,那里也有一些关于DGV的文章。

    下面是相关下载内容:
    微软的文档和示例以及我翻译的部分文档和演示代码   
    微软的文档和示例原始下载