![](/img/trans.png)
[英]Windows Forms: Datagridview cell value not updated when it is modified
[英]Datagridview cell value not updated when modified dynamically
根据设计要求,datagridview 不能由用户直接编辑。 它处于只读模式。 当用户双击单元格时,datagridview 的只读属性变为 false 并且单元格接受键盘输入。 但是,原始键盘输入需要在进入单元格之前进行格式化。 所以,我拦截 KeyPress 事件如下:
private void dgw_keyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
此时单元格处于编辑模式和脏模式。 然后我用不同的方法更新 Value 属性并调用dgw.Refresh()
,它应该在单元格上显示更新的值。 但不会。 仅当当前单元格不脏且未处于编辑模式时才会更新。 如何在单元格仍处于编辑模式时强制显示更新的值?
有任何想法吗?
使用下面刷新当前单元格的值,更改以适合您的 EditingControl 类型
if (dgvMain.EditingControl is TextBox)
{
dgvMain.EditingControl.Text = dgvMain.CurrentCell.Value.ToString();
}
另一种方法:
调用此方法可强制单元格在编辑模式下更新其显示值。 当外部进程修改单元格值并且您想要通知用户更改时,即使用户指定的更改因此丢失,这也很有用。 细节
dgvMain.RefreshEdit();
我用下面的代码解决了。
GrdBudgetTabOver.EndEdit()
这将工作,
dgv.EndEdit()
dgv.InvalidateCell(ColIdx, RowIdx)
您可以通过实现IDataGridViewEditingControl接口来做到这一点。 我认为这是最大程度地控制单元格进入和离开编辑模式的方式。 您可以在 Mark Rideout 的DataGridView FAQ (DOC) 的第 5.11 节中找到更多详细信息
尝试DataGridView.EndEdit方法。
提交并结束对当前单元格的编辑操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.