我在datagridview中有一个datetime列,我以自定义格式显示它:dd / MM / yyyy HH:mm:ss
我想编辑日期时间值,所以我尝试添加一个datetimepicker控件,如果正确选择了值,它就可以工作。 (但我觉得它不高效。)
有时接受无效值并且无限制地发生dgv_dataerror事件而不让我更改值。
例如,当我使用键盘箭头键从一个单元格移动到另一个单元格时,如果按空格键,则意外地将单元格值变为空,并且无限期地发生dataerror事件。
是否有任何替代解决方案可以在没有datetimepicker控件的情况下实现此目的,以更改日期时间值?
答案 0 :(得分:1)
我在这里找到答案: 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的优点是,当客户端具有不同的区域设置时,这会动态变化...