2012-03-26 4 views
1

친구, 기존 데이터를 표시하고 데이터를 추가/편집 할 수있는 datagridview를 사용하는 Windows 애플리케이션이 있습니다. DataGridview에는 Tab/Enter 키를 누른 채로 포커스가 다음 셀로 이동하는 기능이 있습니다. 행의 마지막 열이면 초점은 다음 행의 첫 번째 열로 이동합니다. 이제 셀에 대한 데이터를 입력하고 Tab/Enter 키를 누른 후 잘못 입력 된 데이터에 대한 오류 메시지 (예 : 숫자 값의 형식이 잘못되었거나 값이 0보다 작음 등)가 표시되면 오류 메시지가 표시된 후 메시지 상자에서 포커스가 다음 셀로 이동합니다. 특정 셀에 대한 오류 메시지가있는 경우 해당 셀을 생성하는 오류에만 포커스가 설정되고 다음 셀로 이동하지 않는 방법이 있습니까?유효성 검사 오류 후 DataGridview에서 특정 셀에 포커스를 설정하는 방법은 무엇입니까?

dgView.Rows[e.RowIndex].Cells["ColumnName"].Value = "0.00"; 
    dgView.Select(); 
    dgView.CurrentCell.Selected = true; 

을하지만 그것은 작동하지 않습니다 : dgView_CellEndEdit 이벤트에서 나는 코드를 사용하여 셀을 선택하려고했습니다. dgView_SelectionChanged 이벤트에서 나는 다음을 사용했습니다 :

dgView.CurrentCell = dgView[RequiredColumnIndex, RequiredRowIndex]; 
    dgView.BeginEdit(true); 

이 또한 도움이되지 않습니다. 문제 해결을 도와주세요.

답변

0

확인 및 확인을 위해 CellValidating 이벤트를 사용해야한다고 생각합니다. 검사가 실패하는 경우 오류 메시지를 표시하고 e.Handled e.Cancel= false을 설정할 수 있습니다. 이렇게하면 필요한 수정을 수행 할 때까지 현재 오류 셀에 포커스가 유지됩니다.

+0

감사합니다. 내가 확인하도록하겠습니다. – Sukanya

+0

dgView_SelectionChanged 이벤트에서 dgView.CurrentCell을 설정하고 있습니다. 그러나 여기에 다음과 같은 오류가 나타납니다. "프로그램이 셀 값 변경을 커밋하거나 종료 할 수 없기 때문에 작업이 성공하지 못했습니다." . 할 일을 제안하십시오. – Sukanya

+0

저는 visual-studio 2005를 사용하고 있습니다. e.handled 것은 없습니다. e.Cancel – Sukanya