We have a fairly large datagrid with ~30 columns, and thousands of rows.
When the user grabs the scrollbar with the mouse button and scrolls up/down, the grid performs well and scrolling is fast enough.
When the user instead uses the mouse wheel to scroll up and down, performance is good on small scroll movements. However, on large movements, the grid just freezes up for a few seconds, providing a poor user experience.
We've attached the following to the MouseWheel event on the grid:
void LayoutUltraGrid_MouseWheel(object sender, MouseEventArgs e)
{
Debug.WriteLine("MouseWheel Delta: " + e.Delta);
}
And have noticed on small deltas (+/-120) we get good performance. On large deltas (i.e. when the user attempts to scroll a long distance rapidly the rolling the wheel quickly), for example +/-960, we get the freeze-up.
Is there a way to improve this situation? Perhaps by filtering out the large deltas and restricting only small deltas to be processed? We think that may solve our problem but are wondering if the grid makes it easy to support such an approach using the provided API.
The best solution we have found so far is to inherit the grid and override OnMouseWheel, and filtering out large scrolls and instead replacing them with page up/down scrolling, which gives a more responsive user interface that doesn't freeze-up.
Hello gsharm3,
I created the following case for you: 'CAS-91735-CQN0M7' and will update you through it.