直接上代码:
#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
这个只能设置日期,时间不能设置,还在研究中