所以我知道这个问题得到了回答(Do not trigger cell value change event in DataGridView when the value is changed programatically),但所提供的答案没有足够的记录,也没有用。
基本上我正在通过验证引入的数据来处理datagridview的Cell Value Changed事件,如果数据超出指定范围,我将其更改为适合。而且存在问题;当我以编程方式执行此操作时,它会触发事件两次;我不希望它这样做。
有什么想法吗?
提前致谢!
答案 0 :(得分:1)
当您需要以编程方式更改值时,可以禁用CellValueChangedEvent。在更改了值之后,只需重新启用CellValueChangedEvent,例如。
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
//check whether the value is valid
var specifiedMax = 100;
var compareValue = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
if (compareValue > specifiedMax)
{
//disable the cellvaluechanged event before changing the value
this.dataGridView1.CellValueChanged -= this.dataGridView1_CellValueChanged;
try
{
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 100;
}
finally
{
//enable the cellvaluechanged event again
this.dataGridView1.CellValueChanged += this.dataGridView1_CellValueChanged;
}
}
}