CellValueChanged与DataGridView的CellValidating事件

时间:2010-08-12 15:57:15

标签: c# .net winforms datagridview

为DataGridView实现验证逻辑代码和条件格式代码的最佳位置是什么?

在我阅读过这个控件的很多书籍和文章中,它似乎表明要处理的相应事件是CellValidating。 嗯,这个名字也意味着这一点。

但是,这个事件对我的口味有点过于频繁,我不确定是否需要。 例如,此事件会在用户切换到另一行时触发。

另一方面,CellValueChanged事件似乎仅在单元格值更改时触发,这意味着验证代码仅在值更改时运行,而不是每次用户更改单元格时运行。

现在,由于有很多书使用CellValidating事件,我想知道使用CellValueChanged是否有任何问题(例如显示)?

我理解在使用简单验证和条件突出显示规则时,性能的影响应该是无关紧要的,但是如果可以避免的话,我希望每次用户移动到另一个单元时都不会运行无用的代码。

谢谢,

2 个答案:

答案 0 :(得分:4)

我目前正在使用CellValueChanged进行自定义验证的网格,并且没有显示或其他任何问题。

我使用此事件是因为我想触发特定的事件顺序,但仅限于用户更改单元格的值时。

我没有注意到性能损失的方式(用100 - 5000行测试)。

我认为最终取决于您的验证需求。就我而言,CellValueChanged做了我想要/需要的事情。

修改

CellValidating事件的最大优点是,如果输入的值未通过验证,则可以阻止用户离开单元格。我不想这样做。

答案 1 :(得分:-1)

很简单,在CellValidatingEvent中你需要检查条件是否正确。如果您的条件为假,那么您只需添加此代码<#@ assembly name="C:\stash\cshn\App\MyProj\bin\MyProj.Business.dll" #>。它会阻止光标失去焦点