【发布时间】:2012-04-05 09:40:57
【问题描述】:
我在 C# Winform 项目中有一个 datagridview。此 datagridview 用于将值插入数据库。每列最多匹配一个对应的 db 列。
其中一列是 DateTime 列。我想“验证”这个日期以确保它的格式正确。理想情况下,您会离开单元格,它会将其转换为我选择的日期时间格式。
我使用了一系列事件来尝试创建此功能,但遇到了问题。我一直遇到的问题是,当事件触发时,该值尚未存储在单元格中。因此,当我做这样的事情时:
private void Grid_Modify_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (Grid_Modify.Columns[e.ColumnIndex].Name == "DateTime")
{
Grid_Modify[e.ColumnIndex, e.RowIndex].Value =
Convert.ToDateTime(Grid_Modify[e.ColumnIndex, e.RowIndex].Value).ToString("YYYY-MM-DD hh:mm:ss");
}
}
问题是,它转换为日期时间的值是原始单元格值,而不是我刚刚输入的新值。我认为这是因为在更新单元格值之前触发了事件。
问题是:当我更改日期值时,格式化日期的最佳方式是什么?
我尝试过的其他事件是:CellLeave、CellValueChanged、CellValidated 和 CellEndEdit。
注意:CellValueChanged 事件是唯一真正可以获得新单元格值的事件,但是,当我在事件处理程序中更改值时,它会陷入无限循环。
【问题讨论】:
标签: c# winforms events datagridview event-handling