2015-12-02 64 views
1

找不到任何方法來完成我所做的工作。 我有一個DataGridView名爲data1。我想要的是在填充之後檢查當前單元格是否可以接受(不低於-99)。如果是 - 將其更改爲-99。類似的,如果我將最小值設置爲文本框,並且如果它不正確,則更改它的值。 這裏是代碼:如何在用戶離開單元格時更改datagrid單元格的值

private void data1_CellLeave(object sender, DataGridViewCellEventArgs e) 
{ 
    if (Convert.ToInt32(((DataGridView)sender).CurrentCell.Value) < -99) 
    { 
     ((DataGridView)sender).CurrentCell.Value = -99;     
    } 
} 

此代碼不起作用。並沒有出現錯誤。

+0

請解釋收到的錯誤是什麼,如果有的話 – Steve

+0

沒有錯誤。當我改變單元格中的值並離開時,它不工作。 –

+2

[MSDN上CellLeave](https://msdn.microsoft.com/de-de/library/system.windows.forms.datagridview.cellleave%28v=vs.110%29.aspx)_Occurs當細胞失去輸入焦點並且不再是當前單元格。因此,您需要保留對之前當前單元格的引用。或者在斯圖爾特的回答中更好:用戶e4.Params! – TaW

回答

1

此代碼的工作,你希望它:

private void data1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    DataGridViewTextBoxCell cell = (DataGridViewTextBoxCell)data1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 
    if (Convert.ToInt32(cell.Value) <= -99) 
     cell.Value = -99; 
} 

Cellleave事件獲取單元格的前值已改成了一個不同的後離開該小區。並且CellEndEdit事件獲取最後一個值。代碼作品相同CellValidated事件。

1

我認爲你要找的是DataGridView.CellValidating這個事件在用戶離開當前單元時觸發,但在CellLeave觸發或綁定數據被推送到數據源之前觸發。這允許您:檢查用戶輸入的值,防止用戶離開單元格,更改用戶輸入的值,在單元格上設置錯誤指示器。

+0

這不適用於這段代碼。這一個工程:[DataGridView.CellValidated](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvalidated(v = vs.110).aspx) –

相關問題