【发布时间】:2021-06-21 13:41:38
【问题描述】:
我有一个 Datagridview。我正在尝试获取旧值(编辑前的值)和新值,然后进行比较。
private void GridDetails_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == GridDetails.Columns["Address"].Index)
{
var oldValue = GridDetails[e.ColumnIndex, e.RowIndex].Value;
var newValue = GridDetails[e.ColumnIndex, e.RowIndex].EditedFormattedValue;
if(oldValue!=newValue)
{
GridDetails.Rows[e.RowIndex].Cells["Address"].Style.BackColor = Color.FromArgb(212, 212, 155);
}
}
}
但是新旧值都是一样的。
【问题讨论】:
-
@dr.null 仍然是旧值返回新值。
-
否 如果您从
DataGridViewCellValidatingEventArgsarg 获取新值,则不会。保持oldValue代码原样并按原样获取新值:var newValue = e.FormattedValue;。另外,列的类型是什么?也许您需要将值转换为正确的类型以进行比较。 -
var newValue = e.FormattedValue;我同意你的看法。此行返回新值。但是, var oldValue = GridDetails[e.ColumnIndex, e.RowIndex].Value;此代码行还返回新值。不是旧值。
-
相关列的类型是什么?复选框,文本框,...等?您是否在代码中的某处提交了编辑?
标签: c# winforms datagridview