2012-06-11 3 views
3

텍스트 열과 확인란 열이있는 DataGridView가 있습니다. 사용자가 확인란을 클릭하면 사용자에게 묻습니다. 나는 아래의 코드를 사용하여이 작업을 가지고 :CurrentCellDirtyStateChanged가 너무 빨리 적용됩니다.

private void grid_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    var grid = sender as DataGridView; 
    if (grid.IsCurrentCellDirty) 
    grid.CommitEdit(DataGridViewDataErrorContexts.Commit); 
} 

을 그러나, 나는 내가 완성 입력있을 때 대신 입력이 투입 계속 텍스트 열을 입력 할 때. 이렇게하면 텍스트 셀이 계속 강조 표시되고 단일 문자 만 입력 할 수있게됩니다. 체크 박스 값이 변경된 경우에만이 이벤트를 처리하도록 수정하려면 어떻게해야합니까?

답변

2

당신이해야 할 일은 텍스트가 아닌 확인란에만주의하십시오. 비슷한 문제에서 발견 된 해결책은 CellEnter에 어떤 필드가 편집되고 있는지를 기록하는 이벤트를 넣는 것이 었습니다. 더러운 핸들링 이벤트는이를 확인하여 수행 할 작업을 결정합니다.

내가 왜 상상할 수없는 지저분한 수표로 좌표를 사용할 수없는 이유는 무엇입니까?

1

방금 ​​같은 문제가있었습니다. 특정 열 (CheckBox 열)에주의를 기울이고 싶다면이 방법이 유용 할 것입니다.

private void grid_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
{ 
    var grid = sender as DataGridView; 

    if (grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1) 
    grid.CommitEdit(DataGridViewDataErrorContexts.Commit); 
} 
관련 문제