我在datagridview中有一个日期时间列,并以自定义格式显示:dd/MM/yyyy HH:MM:ss
我想编辑日期时间值,所以我尝试添加一个日期时间选择器控件,如果值选择正确,它就可以工作。(但我觉得效率不高)。
有时会接受无效值,并且dgv_dataerror事件无限发生,而不允许我更改值。
例如,当我使用键盘箭头键从一个单元格移动到另一个单元格时,如果我意外地按下空格键,单元格值将变为空,数据错误事件将无限发生。
有没有其他解决方案可以在不使用日期时间选择器控件更改日期时间值的情况下实现这一点?
我在这里找到了答案:https://msdn.microsoft.com/en-us/library/7tas5c80%28v=vs.110%29.aspx
它使用DateTime选择器创建一种类型的DataGridViewColumn。。。
编辑:如何动态添加此自定义列:
dgvMain.DataSource = bulkImportTable;
CalendarColumn col = new CalendarColumn();
col.Name = "DeployDate";
dgvMain.Columns.Remove("DeployDate");
dgvMain.Columns.Add(col);
col.DataPropertyName = col.Name;
foreach (DataGridViewRow row in dgvMain.Rows)
{
row.Cells[dgvMain.Columns.Count - 1].Value = DateTime.Now.ToShortDateString();
}
在这段代码中,我使用ToShortDateString(),但您可以在这里使用自己的自定义方法。请确保也在自定义的CalendarColumn中更改此自定义代码。。。使用ShortDateString和LongDateString的优点是,当客户端具有不同的区域设置时,这种情况会动态变化。。。