As discussed on the forum, this was a lacking feature in the TLV so I added it. It's a pretty simple change. I followed the existing TreeList style of events. All events pass the OLVListItem as an argument. The Before* events are cancellable. I made a design decision that these events are only triggered by UI behavior, not by external or internal calls to the Expand/Collapse methods. An alternative design might be to move the events into those methods. Another alternative might be to make that behavior configurable.
I put the events in TreeListView.cs instead of Events.cs because they are specific to that control. Since these are the only control-specific events, I didn't have a style to follow.