C# Winform 프로젝트에 datagridview가 있습니다. 이 datagridview는 값을 데이터베이스에 삽입하는 데 사용됩니다. 각 열은 해당 db 열과 일치합니다.DataGridView C# 편집 후 값 형식 편집
열 중 하나가 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 이벤트는 실제로 새 셀 값을 가져올 수있는 유일한 이벤트 였지만 이벤트 핸들러 내에서 값을 변경하면 무한 루프에 걸리게됩니다. CellValueChanged에,
private bool _inCellValueChanged = false;
다음 :
내가 가고 있었다 두려워했다 그와 같은 것을 가지고 있어야만합니다. – ImGreg
내가 가진 관련 문제는 "Time Columns"라고 불리는데도 새로운 시간 값을 입력했을 때 현재 날짜가 기본값 인 TimeColumns가 모두 표시된다는 것입니다 DateTime 부분과 모든 사용자 편집 할 수있는 부분은 시간 부분입니다. 이것은 실용적인 해결책이었습니다. – mickeyf