2015-12-02 65 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) –

相关问题