WinForm Datagrid结构剖析(三)

时间:2010-03-15 12:19:03  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:;   本节主要是和大家一起讨论一下怎样自建一个列类,并加入到Datagrid中进行使用。在上一节中和大家一起讨论了DataGridTextBoxColumn 类,并在它基础上生成了一个继承自DataGridTextBoxColumn的具有改变cell与行(即一行内的cell的集合)变色能力的 DataGridColoredTextBoxColumn类。要实现创建一个列类,应该很好地再次研究一下DataGridTextBoxColumn 类,并据此相似的...
  正文:大家好,很高兴又能和大家见面了,不知道大家对前两篇关于Datagrid结构的文章了解得如何,今天讨论的问题是在它们基础上开展的,因此笔者希望您能看一下前两篇文章以获得必要的概念。
  
  三、自定义列类
  
  本节主要是和大家一起讨论一下怎样自建一个列类,并加入到Datagrid中进行使用。在上一节中和大家一起讨论了DataGridTextBoxColumn 类,并在它基础上生成了一个继承自DataGridTextBoxColumn的具有改变cell与行(即一行内的cell的集合)变色能力的 DataGridColoredTextBoxColumn类。要实现创建一个列类,应该很好地再次研究一下DataGridTextBoxColumn 类,并据此相似的创建一个新类,本次示例是要创建一个具有下拉框的列(如图1所示),因此,它应该与DataGridTextBoxColumn类是同级的,也就是说它们应该是从同个父类派生出来的,这样才可以在保证在使用上的相似性与一致性。
  
  
  
   图1 具有下拉框列的Datagrid
  
  1. 何时会用到下拉框?
  
  什么时候会用到下拉框列,一般来说,是当要在cell 中填的内容是确知的几种可能之一时才会使用。那么数据源可能就会来自于两张数据表,一张是Datagrid整体体现的数据表,另一张是记录下拉框列表内容的。(当然,下拉框列表内容也可以不存放于数据库中,只是为了统一管理,笔者习惯于这么做)。在本例中,Datagrid的数据源为:
  
  
  
   图2 Datagrid数据源
  
  其中,“客户”表是Datagrid整体显示出来的内容的源表,由于“国家”列中所填的是确认的几个国家,因此笔者用“国家”表来记录在下拉框列表中显示出来的供用户选择的国家名。
  
  2. 下拉框列的使用过程
  
  现在来看一下下拉框列的使用过程:
  
   图3 下拉框使用过程演示
  
  从图3中,我们可以方便的了解到下拉框列的处理过程,在平常状况下,该列中的cell还是以textbox的形式进行显示的,下拉框的出现是被textbox中落入焦点才激发的,而后,该cell就是一个实实在在的下拉框了,当焦点离开该cell后,cell又恢复成一个textbox的模样了。
  
  3. 类的制作
  
  正式要开工了,先理一下思路,我们要做些什么事:
  
  (1) 从DataGridTextBoxColumn类的父类DataGridColumnStyle继承一个自定义列类:DataGridComboBoxColumn;
  
  (2) 在列中加入一个ComboBox实例,用于聚焦后的出现,与DataGridTextBoxColumn类使用的textbox所属的DataGridTextBox类相似的,我们应该设计一个专用的combobox类提供给DataGridComboBoxColumn类使用。
  
  (3) 跟踪cell的状态,当聚焦时在textbox的外面添加一个combobox,失去焦点后隐藏起combobox,恢复成textbox;
  
  (4) 重写父类的Edit 与Paint方法,以适应Combobox的使用(关于Paint问题的具体讨论请见上一节)在Edit中将Combobox中产生的(用户输入或在下拉框中选择)变化记录入cell中,这也便于在更改后更新到相关的数据源中去,在本例中,笔者主要是示例实现下拉框与数据源的绑定功能,因此不支持用户输入,反而关注Combobox的DisplayMember与ValueMember属性,用于体现和数据源的关系。这点需要读者注意,如果您希望同时实现用户输入(这倒不是Combobox的优点了,对吧?)需要对笔者的代码进行适当的修改。
  
  类的代码与使用方法请见“(三)类代码”与“(三)使用代码”两篇文章。
  
  本节只是从概念角度描述了新建一个列的思路与所需要进行的工作。Datagrid 结构剖析也即将告一段落,本系列旨在抛砖引玉,希望给大家一点有益的启发,有利于学习与工作。接下来,笔者会和大家一起讨论Datagrid的事件响应机制与方法,以及与数据库连接的高级应用。大家也可以写信给我,告知您对于Datagrid关心的内容,笔者会选择问题较集中的方面与大家进行新的讨论。祝大家学习进步,事业有成!
  
  ----
  
    声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。
  
  QQ: 18349592
  
  E-Mail: henry7685@hotmail.com

WinForm Datagrid结构剖析(三)》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13234.html


关键字:

关于《WinForm Datagrid结构剖析(三)》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td