【问题标题】:How to change datagrid cell value when user leaves cell用户离开单元格时如何更改datagrid单元格值
【发布时间】:2016-03-07 02:50:25
【问题描述】:

找不到任何方法来做我该做什么。 我有一个名为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;                
    }
}

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

【问题讨论】:

  • 请解释收到的错误,如果有的话
  • 没有错误。当我更改单元格中的值并离开时,它只是不起作用。
  • MSDN on CellLeave 当单元格失去输入焦点并且不再是当前单元格时发生。因此您需要保留对先前当前单元格的引用..!或者更好,如斯图尔特的回答:用户 e4.Params!
  • @OhBeWise 谢谢你的提示,我现在就去做

标签: c# winforms datagridview datagrid


【解决方案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 事件中也相同工作。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2016-03-29
    • 2014-03-12
    • 2011-02-25
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多