gpt4 book ai didi

时间:2018-01-08 标签:c#winforms: searching for datagridview event that will fire after changing cell value AND cell focus

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:59 29 4
gpt4 key购买 nike

当且仅当特定单元格的值发生变化并且焦点已转移到另一个单元格时,我才需要执行一些逻辑。仅当值和焦点都发生变化时才需要执行逻辑......即用户已完成对单元格的编辑并继续前进。它不应该仅仅通过改变单元格焦点而消失......只有当值被改变时。我一直在寻找和试验事件,但到目前为止都没有成功。

请注意...这是一个以编程方式填充的未绑定(bind) GridView 。我很想使用传统的绑定(bind) GridView ,但由于我们现有代码的编写方式,这是我必须使用的。

这是我试过的...

DataGridView.CellValidated“在单元完成验证后发生。”当我更改单元格值时会触发...然后每次我更改单元格焦点时都会触发,无论我是否在第一次之后实际更改了单元格值。不符合我的需求,因为每当我移动焦点时它都会被调用......即使值(value)没有变化。

DataGridView.CellValidating“当单元格失去输入焦点时发生,启用内容验证。”似乎也没有满足我的需要。

DataGridView.CellValueChanged“当单元格的值发生变化时发生。”每次我更改值时都会触发...在转移焦点之前。对我的目的也没有用。

我真的不知道我是否使用了正确的事件以及是否没有在某处设置属性或没有调用特定方法来更改 GridView 的状态。帮助将不胜感激。

谢谢,约翰

最佳答案

使用 Cellvalidating 事件检查值是否已更改或未将其放在全局 bool 值上并保存当前单元格行索引和列,并在 SelectionChanged 事件上检查值是否更改:如果没有更改,请使用 DatagridCurrentCell把焦点放在保存索引的行和列上保存

datagridview_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if(e.FormattedValue == (theOldValue))
{
changed = false;
currentIndexRow= e.RowIndex;
currentIndexColumn= e.ColumnIndex;
e.cancel = true;

}
}
datagridview_SelectionChanged(object sender, EventArgs e)
{
if(!changed)
datagridview.CurrentCell = datagridview.Rows[currentIndexRow].Cells[currentIndexColumn];
}

关于时间:2018-01-08 标签:c#winforms: searching for datagridview event that will fire after changing cell value AND cell focus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716715/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com