Thanks Igor!
Here is a simple example:
I have an IGrid with the master data and an IGrid with the detail data (e.g.: customers - orders).
Every time the user changes the row in the master data IGrid, I call a procedure "Show_Details" in the "CurRowChangeRequest" event procedure to display the corresponding detail data.
Furthermore in a search dialog the user can enter certain search criteria. A self-programmed search routine (emulation of the ActiveX "FindSearchMatchRow" function) then searchs the corresponding row in the master data IGrid and if it is found, I set the cursor to the corresponding master Igrid row with "SetCurCell".
Earlier in the ActiveX - version I needed to do then nothing more, since in the "CurRowChangeRequest" event procedure automatically invokes the procedure "Show_Details" !
Now in the IGrid.Net - version I have to call the procedure for the display of the detail data explicitly after each "SetCurcell" - call!
In case the current master dataset has not yet been fully processed by the user, I could block the change of the master IGrid data row in the "CurRowChangeRequest" event procedure!
For validation routines the "CurRowChanged" event unfortunately comes too late, because the invalid row has then already been left!