2013-12-13 2 views
3

데이터 테이블에 데이터 소스가있는 DataGridview가 있습니다. 수동으로 일부 셀 값을 변경해야합니다. 예를 들어 셀 입력 값에 문자 'g'가 포함되어 있으면 셀을 떠날 때 자동으로 'abc'를 변경해야합니다. 현재 셀의 포맷은 코드 값을 확인 다음DataGridView 셀 값을 프로그래밍 방식으로 변경하십시오.

private void dgwPNotlar_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex<2||e.ColumnIndex>4||e.FormattedValue.ToString()=="") 
    { 
    return; 
    } 

    if (e.FormattedValue.ToString().Contains('G')||e.FormattedValue.ToString().Contains('g')) 
    { 
    dgwPNotlar.EditMode = DataGridViewEditMode.EditProgrammatically; 
    dgwPNotlar.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; 
    dgwPNotlar.EndEdit(); 
    dgwPNotlar.EditMode = DataGridViewEditMode.EditOnEnter; 
    return; 
    } 
} 

때 코드 "dgwPNotlar.EndEdit();" 내가 변경 한 셀 값은 "abc"이고, 이전 값은 "g"또는 "G"로 돌아갑니다.

아이디어가 있습니까? 셀의

답변

7

변화는 검증하는 이벤트 후 일이, 그래서 대신 CellValidated 이벤트를 시도해야합니다 :

void dgv_CellValidated(object sender, DataGridViewCellEventArgs e) { 
    string cellValue = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString(); 
    if (cellValue.Contains('G') || cellValue.Contains('g')) { 
    dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "abc"; 
    } 
} 
+0

, 감사합니다 .. –

관련 문제