C# 用户离开单元格时如何更改datagrid单元格值

C# 用户离开单元格时如何更改datagrid单元格值,c#,winforms,datagridview,datagrid,C#,Winforms,Datagridview,Datagrid,找不到任何方法来做我想做的事。 我有一个名为data1的DataGridView。我所要做的就是在填充当前单元格后检查它是否可以接受(不低于-99)。如果是,则将其更改为-99。如果我将最小值设置为文本框并在不正确时更改其值,则类似。 代码如下: private void data1_CellLeave(object sender, DataGridViewCellEventArgs e) { if (Convert.ToInt32(((DataGridView)sender).Curr

找不到任何方法来做我想做的事。 我有一个名为
data1
DataGridView
。我所要做的就是在填充当前单元格后检查它是否可以接受(不低于
-99
)。如果是,则将其更改为
-99
。如果我将最小值设置为文本框并在不正确时更改其值,则类似。 代码如下:

private void data1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (Convert.ToInt32(((DataGridView)sender).CurrentCell.Value) < -99)
    {
        ((DataGridView)sender).CurrentCell.Value = -99;                
    }
}
private void data1\u CellLeave(对象发送方,DataGridViewCellEventArgs e)
{
if(Convert.ToInt32(((DataGridView)sender.CurrentCell.Value)<-99)
{
((DataGridView)sender.CurrentCell.Value=-99;
}
}

此代码不起作用。并且没有出现错误。

我认为您要查找的是,当用户离开当前单元格时,但在CellLeave触发或绑定数据推送到数据源之前,会触发此事件。这允许您:检查用户输入的值,防止用户离开单元格,更改用户输入的值,在单元格上设置错误指示器

此代码按照您的要求工作:

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;
}
private void data1\u CellEndEdit(对象发送方,DataGridViewCellEventArgs e)
{
DataGridViewTextBoxCell单元格=(DataGridViewTextBoxCell)data1.Rows[e.RowIndex]。单元格[e.ColumnIndex];

if(转换为32(单元格值)如果没有错误,请解释收到的错误是什么。当我更改单元格中的值并离开时,它不起作用。当单元格失去输入焦点且不再是当前单元格时发生。因此,您需要保留对以前当前单元格的引用…!或者更好,如斯图尔特的回答:使用e4.Params!@OhBeWise谢谢提示,我我将立即执行此代码不起作用的操作。此代码有效: