I have too much problems trying to implement an Undo/Redo operation in a ListView Control, just to add/remove items.
I realized time ago a relative question here Extend
You might also want to check out this Undo/Redo Framework written in VB.NET
http://www.codeproject.com/Articles/43436/Undo-Redo-Framework
Its designed for the following type of controls (but should also work with custom controls for the most part)