One of my collegues posted a while back regarding an issue where users with any latency above a small amount suffered from missed double click events being fired on the server when opening a Row within a DataGridView. I cant find the post currently but I will get it off him tomorrow and update this thread.
We've tried to reiterate to our users the issue and to simply click again. We've even implemented a workaround where if the single click event fires on a row that is already selected, it acts as a double click. But the user's dont understand the problem, and we keep getting reports of 'bad performance, very laggy, slow, etc'. Now that is the users perception due to this bug - of corse all the rest of the application involving single click navigation works fine, but they dont seem to understand the difference.
Today I did an investigation into other possible workarounds.
Firstly, I tried using the KeyDown event to check for the enter key. I tried mutlitple approaches - setting the KeyFilter, deriving from the DataGridView and overriding GetCriticalEvents to include the KeyDown as critical, but no approach seems to ever fire the KeyDown event on the server. The client side grid simply selects the next row down (without updating the server side so that the SelectedRow property doesn't even match what is displayed on the client).
My next approach was a context menu where they could click an item to open the current row. This suffered critical problems aswell. Firstly, the right click wouldn't select the row it was beneath, so unless the user first left clicked, then right clicked, they wouldn't be opening the correct entry. Secondly, my efforts to force this by using the CellMouseClick event were futile as the event didn't fire for the right mouse button.
The ideal solution would be a fix to the core problem of double click events in high latency scenarious. But any solution is welcome right now as this is currently the major problem holding back many of our clients from moving over to the web app.
Cheers.
Tyson.