If you are going to perform complex and multiple validation, you should try the second approach.
Also this approach allows the user more flexibility.
However, pressing the Esc key in this situation will revert the initial value of the cell and it will close the editor. The Row Validating event has a slightly different behavior.
Well, after doing some research and a bit of trial and error, found out a couple of approaches. For the specific project i was working in, it was the perfect choice.
– Immediate validation: For those of you who have used dynamic regular expression validator in c#. However, one has to evaluate the pros and cons of each one.
Let's assume that the If the user enters empty string for a specific cell and tries to navigate to another row, the validation fails and the Error Text is displayed on the corresponding row.
At this point the user is not allowed to cancel the performed changes, pressing the Esc key.
To copy the code in this topic as a single listing, see How to: Validate Data in the Windows Forms Data Grid View Control.
Every now and then cell values of Data Grid View have to be validated.
For more information about handling events, see NIB: Consuming Events. In this example, the event handler calls the Commit Edit method to raise the Cell Value Changed event and determine the current value of a Data Grid View Check Box Cell.
This code example is part of a larger example provided in How to: Disable Buttons in a Button Column in the Windows Forms Data Grid View Control.
This scenario can be achieved by using the Row Validating event, which is fired when the user tries to change the current row (changing to another row or when the control loses focus).