为DataGridView实现验证逻辑代码和条件格式代码的最佳位置是什么?
在我阅读过这个控件的很多书籍和文章中,它似乎表明要处理的相应事件是CellValidating。 嗯,这个名字也意味着这一点。
但是,这个事件对我的口味有点过于频繁,我不确定是否需要。 例如,此事件会在用户切换到另一行时触发。
另一方面,CellValueChanged事件似乎仅在单元格值更改时触发,这意味着验证代码仅在值更改时运行,而不是每次用户更改单元格时运行。
现在,由于有很多书使用CellValidating事件,我想知道使用CellValueChanged是否有任何问题(例如显示)?
我理解在使用简单验证和条件突出显示规则时,性能的影响应该是无关紧要的,但是如果可以避免的话,我希望每次用户移动到另一个单元时都不会运行无用的代码。
谢谢,
答案 0 :(得分:4)
我目前正在使用CellValueChanged进行自定义验证的网格,并且没有显示或其他任何问题。
我使用此事件是因为我想触发特定的事件顺序,但仅限于用户更改单元格的值时。
我没有注意到性能损失的方式(用100 - 5000行测试)。
我认为最终取决于您的验证需求。就我而言,CellValueChanged做了我想要/需要的事情。
修改强>
CellValidating事件的最大优点是,如果输入的值未通过验证,则可以阻止用户离开单元格。我不想这样做。
答案 1 :(得分:-1)
很简单,在CellValidatingEvent中你需要检查条件是否正确。如果您的条件为假,那么您只需添加此代码<#@ assembly name="C:\stash\cshn\App\MyProj\bin\MyProj.Business.dll" #>
。它会阻止光标失去焦点