要比较DataGridView中已更改单元格与原始值,可以使用以下代码示例:
private Dictionary originalValues;
// 在加载DataGridView时,保存原始值到字典
private void Form1_Load(object sender, EventArgs e)
{
originalValues = new Dictionary();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
originalValues[cell.UniqueID] = cell.Value;
}
}
}
// 在DataGridView的CellValueChanged事件中比较已更改单元格与原始值
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCell changedCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
string cellID = changedCell.UniqueID;
if (originalValues.ContainsKey(cellID))
{
object originalValue = originalValues[cellID];
object newValue = changedCell.Value;
if (!originalValue.Equals(newValue))
{
// 单元格的值已更改
// 在这里执行需要的操作
}
}
}
这段代码使用了一个字典originalValues
来保存DataGridView中每个单元格的原始值。在加载DataGridView时,将每个单元格的UniqueID和值保存到字典中。然后,在DataGridView的CellValueChanged事件中,通过改变的单元格的UniqueID在字典中查找对应的原始值,并与新值进行比较。如果两个值不相等,则表示单元格的值已更改。在这里,您可以执行需要的操作。