사용자가 군대 형식으로 시간을 입력해야하는 데이터 입력 양식을 고려하십시오. 그들은 작업 속도를 높이기 위해 키패드에서 키를 원하지만시/분 사이에 콜론 (:)을 입력하고 싶지는 않습니다.DataGridView의 셀에 데이터를 입력하면 셀 유효성 검사 전에 해당 항목을 수정할 수 있습니까?
열은 시간을 허용하도록 형식이 지정되며 시간은 표준 AM/PM 형식으로 자동 변환됩니다. 불행히도 콜론이 필요합니다. 따라서이 입력에 대해 변환 메소드를 실행하여 시간 값으로 변환하려고 시도해야합니다.
이 작업을 수행하는 방법은 내가 원하는 대답이 아닙니다. 누군가가 사용자가 입력 한 값을 다른 값으로 변경하려는 이유가있을 수 있습니다. 중요한 점은 유효성 검사 전에 DataError 이벤트가 발생하지 않아야한다는 것입니다.
private void sampleDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// Ensure we're looking at the column that requires our attention
if (sampleDataGridView.Columns[e.ColumnIndex].Name == "timeCol")
sampleDataGridView[e.ColumnIndex, e.RowIndex].Value = convertMilitary(e.FormattedValue);
}
셀이 기록 된 후이 코드에 스테핑, 이벤트 인수 말할 :
나는이 그래서 내가 일을 기대했던 작성을 위해 CellValidating 오른쪽 장소가 될 것이라고 가정 형식화 된 값이 실제로 입력 된 값이지만 셀의 현재 값으로 설정하려고해도 유효성 검사에 도움이되지 않습니다. 자세히 살펴보면 값이 사용자 입력 이전의 값이라는 것을 알게되었습니다.내가 이것을 넣을 곳이 없기 때문에 이것은 나를 막 다른 골목으로 만든다. 나는 바른 위치에 있다고 느낀다. 그러나 나는 무엇인가 놓치고있다. DataError 이벤트가 실패한 유효성 검사에서 제기되지 않도록이 변환을 어디에 넣어야합니까?
내가 설정할 필요가있는 다른 속성이있을 수 있습니까? 그게 내가 사용자가 무엇을하려고하는 것처럼 셀 값을 직접 키잉을 변경해야합니다 ...
형식을 설정하면 코드를 표시 할 수 있습니까? – V4Vendetta
디자이너를 통해 DataGridView의 열에 대한 기본 셀 스타일을 선택할 수 있습니다. 나는 "t"형식으로 설정 했으므로 사용자가 예를 들어 13:40 키를 입력하면 1:40 PM으로 자동 표시됩니다. 그러나 이러한 시간 문자열로 4 자리 숫자를 수정하는 방법은 부적절합니다. 유효한 시간을 반환한다는 것을 알고 있습니다. 여기서 문제는 제가 유효성 검사 이벤트를 통해 다시 추가 할 수 없다는 것입니다. 왜냐하면 추측하기에 이미 유효성 검사를 통과했지만 형식 값 속성을 설정할 수없고 검색 만 할 수 있습니다. – Mohgeroth