2011-05-13 1 views
0

사용자가 군대 형식으로 시간을 입력해야하는 데이터 입력 양식을 고려하십시오. 그들은 작업 속도를 높이기 위해 키패드에서 키를 원하지만시/분 사이에 콜론 (:)을 입력하고 싶지는 않습니다.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 이벤트가 실패한 유효성 검사에서 제기되지 않도록이 변환을 어디에 넣어야합니까?

내가 설정할 필요가있는 다른 속성이있을 수 있습니까? 그게 내가 사용자가 무엇을하려고하는 것처럼 셀 값을 직접 키잉을 변경해야합니다 ...

+0

형식을 설정하면 코드를 표시 할 수 있습니까? – V4Vendetta

+0

디자이너를 통해 DataGridView의 열에 대한 기본 셀 스타일을 선택할 수 있습니다. 나는 "t"형식으로 설정 했으므로 사용자가 예를 들어 13:40 키를 입력하면 1:40 PM으로 자동 표시됩니다. 그러나 이러한 시간 문자열로 4 자리 숫자를 수정하는 방법은 부적절합니다. 유효한 시간을 반환한다는 것을 알고 있습니다. 여기서 문제는 제가 유효성 검사 이벤트를 통해 다시 추가 할 수 없다는 것입니다. 왜냐하면 추측하기에 이미 유효성 검사를 통과했지만 형식 값 속성을 설정할 수없고 검색 만 할 수 있습니다. – Mohgeroth

답변

1

CellParsing 이벤트를 사용하여 보았습니까? 나는 비슷한 것을 할 필요가있을 때 이것을 사용하여 회상하는 것 같다.

+0

알았어, 매력처럼 작동! 나는 모든 유형의 객체를 완벽하게 형식화해야합니다.이 경우에는 전체 DateTime 객체가 반환되어야합니다. – Mohgeroth

+0

올바른 방법으로 올바른 설정을하면 좋을 것입니다. 에드 – MrEdmundo

관련 문제