DataGridView中添加自定义日期时间字段

直接上代码:

 #region 时间输入控件

 DateTimePicker dtp;
 /// <summary>
 /// 初始化日期控件
 /// </summary>
 private void InitDate()
 {
     dtp = new DateTimePicker();
     dtp.Leave += new EventHandler(dtp_Leave);
     dtp.VisibleChanged += new EventHandler(dtp_VisibleChanged);
     dtp.Format = DateTimePickerFormat.Custom;
     dtp.CustomFormat = "yyyy-MM-dd HH:mm:ss";
     dtp.Value = DateTime.Now;
     //dtp.ShowUpDown = true;
     dtp.Hide();
     dtp.Parent = gve_data1;
 }
 private void gve_data1_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     string earl = gve_data1.Columns[e.ColumnIndex].HeaderText.ToString();
     if (earl.Contains("时间"))
     {//点击日期列时显示日期控件
         dtp.Location = gve_data1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Location;
         dtp.Size = gve_data1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Size;
         if (gve_data1[e.ColumnIndex, e.RowIndex].Value != DBNull.Value)
             dtp.Value = Convert.ToDateTime(gve_data1[e.ColumnIndex, e.RowIndex].Value);//单元格值赋值给控件
         dtp.Tag = gve_data1.CurrentCell;//用于dtp_VisibleChanged事件中从控件获取日期
         dtp.Show();
         dtp.Focus();
     }
 }
 private void dtp_Leave(object sender, EventArgs e)
 {
     dtp.Hide();//焦点从日期控件离开时隐藏
 }
 private void dtp_VisibleChanged(object sender, EventArgs e)
 {//改变日期时将日期赋值给单元格
     if (dtp.Tag != null)
     {
         DataGridViewCell cell = (DataGridViewCell)dtp.Tag;
         if (dtp.Value == dtp.MinDate)
             cell.Value = DBNull.Value;
         else
             cell.Value = dtp.Value.ToString("yyyy-MM-dd HH:mm:ss");
     }
     if (dtp.Visible == false)
         gve_data1.Focus();
 }
 #endregion

这个只能设置日期,时间不能设置,还在研究中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山林恩泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值