2013-12-13 46 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

奏效,感謝.. –

相關問題