在DataGrid(Windows Form)中绑定一个日期和时间控件(DatetimePicker)的做法

这是项目中用到的一个技术,很多情况下,客户需要大量录入数据,这是为了提高效率,需要在客户端的用户界面上采用DataGrid来处理,但是.NET提供的DataGrid控件的功能有限,一般只能处理文本,当某一列的数据类型是时间和日期型的时候,客户的输入相当麻烦,也不能有效处理用户误输入的错误格式,如果能够将时间日期控件绑定到Grid的单元格中,既加快了用户的录入,也能有效防止用户的错误录入。

进一步,如果我们自定义了一个控件,类似文本框,但是针对特定的应用做过调整,我们也想把它绑定到Grid中,这种情况下也可以采用这里提到的技术。

要想在DataGrid中绑定一个控件,首先需要了解的是在DataGrid中,外观和内容的关系,DataGrid把数据和外观分得很清楚,可以这么认为,DataGrid就是一个空架子,背后有一个非可视化的东西在支持它,这就是DataTableStyle,可以将这个类看作一个集合,是由DataGridColumnStyle组成的,而DataGridColumnStyle本身有外观和数据2个方面的属性,我们绑定一个控件实际上是改变DataGridColumnStyle的外观部分的属性,数据部分的属性等不用管它,这样就能够把需要绑定的控件与DataGridColumnStyle关联起来,进一步就可以和DataTableStyle关联起来,也就可以改变DataGrid的外观了。

因此所有的工作集中在一点上就是完成一个DataGridColumnStyle的改造。所谓的改造也就是从DataGridColumnStyle继承一下。实际上,DataGridTextBoxColumn就是从DataGridColumnStyle继承的。

下面的一个类是将DateTimPicker绑定到DataGridColumnStyle上的一段代码,绑定其它的控件都可以按照这个方法完成。

public class DataGridTimePickerColumn : DataGridColumnStyle
 {
  //这里增加需要被DataGridColumnStyle承载的控件,这里用的是一个
  //DateTimePicker,日期控件,其他的控件类似
  private DateTimePicker myDateTimePicker = new DateTimePicker();
  //isEditing属性用于跟踪用户是否在宿主控件中编辑了其中的数据。
  private bool isEditing;
  
  //构造函数
  public DataGridTimePickerColumn() : base()
  {
   myDateTimePicker.Visible = false;
   myDateTimePicker.Format=DateTimePickerFormat.Time;
   myDateTi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值