3.5 DataGridViewComboBoxColumn
在DataGridViewComboBoxColumn类型的列中,你可以显示包含下拉列表的单元。这在仅允许用户输入一些特定的时候显得很有用,比如在SQL Server示例Northwind中Products表的Category列,它表示产品的种类,这个应只允许选择现有的产品种类,此时就可以使用ComboBox列。
如果你了解如何为ComboBox控件生成下拉列表,就可以用相同的方式为ComboBox列中的所有单元生成下拉列表。要么通过列的Items集合手动添加,要么通过DataSource,DisplayMember 和ValueMember属性绑定到一个数据源。要了解其中的更多信息,可以参考WinForms中ComboBox空间的用法。
你可以将ComboBox列的单元的实际绑定到DataGridView控件本身的数据源(注意不是ComboBox列的数据源),这需要设置该列的DataPropertyName属性(设置某个列的名称)。
ComboBox列不会在数据绑定时自动生成,所以你必须手动创建它们,然后将其添加到Columns集合属性中。另外,你也可以使用设计器,在设计时设置相应的属性,这个过程类于在设计器中ComboBox控件的使用。
3.5.1 DataError事件和ComboBox列
在使用DataGridViewComboBoxColumn 时,有时会修改单元的或启动ComboBox控件的Items集合,这样可能会引发DataError事件。这是ComboBox列的设计使然,ComboBox列的单元会进行数据验证。在ComboBox列的单元尝试绘制包含的内容时,它需要将包含的进行式化(见第二章第三节),在此转换过程中,它会在ComboBox的Items集合中查找对应的,如果查找失败,就会引发DataError事件。忽略了DataError事件可能会使单元不能进行正确的式化。
3.6 DataGridViewLinkColumn
使用DataGridViewLinkColumn列,你可以显示一列包含超链接的单元。在显示数据源中的URL,或者替代按钮列进行一些特殊行为,如打开另一个子记录窗体时会很有用。
Link列也不会在DataGridView数据绑定时自动生成。要使用它,你还得手动创建,然后将它添加到DataGridView控件的Columns集合中。
你可以处理CellContentClick事件来相应用户的点击动作。这个事件不同于CellClick 和CellMouseClick 事件,后两者在用户点击单元任何位置(而不仅仅时链接)时都会触发。

DataGridViewLinkColumn 类提供了几个属性,用来修改链接的外观,包括点击前,点击时和点击后(类于网页中的超链接)。
4 操作数据(Working with Data)
多数情况下,使用DataGridView的时候都需要跟数据打交道,这时有很多事情可能需要你去做。你需要验证用户输入的数据,或者需要对数据进行式化。DataGridView能够以三种模式显示数据:bound、unboundand 和virtual。每种模式都有自己的特性和存在的理由。不管是否是数据绑定模式,在操作数据时,如果发生错误,DataGridView通常会触发DataError事件,理解该事件发生的原因能让你更好地利用它。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50070-21.html
那小辫子