I've created a virtual tree grid modeled after the sample you've provided. When the user clicks to collapse a branch, I hide all rows within the branch. I would like to avoid refreshing the entire table after doing this, but refreshing only the effected rows leaves residual drawing on the background where the last few rows used to be visible. How can refresh just the effected rows and the background? Or can you suggest a better way to accomplish this task? I HAVE noticed that this is a rather sluggish operation. Any ideas on how I might optimize this?
To determine the area below the last visible row use the RectangleBottomOfRow method. E.g.
r = RectangleBottomOfRow(RowCount);
BTW - How do you hide the rows? If you hide them just by turning flags in an external data source and you have a underlying row to grid row mapping, then you can also force the grid to refresh the affected area with gridModel.Rows.OnRangeInserting before resetting the flag when expanding rows and gridModel.Rows.OnRangeRemoved method calls after resetting the flag when hiding rows.