||I don't think the response answered the question because it becomes irrelevant to what tool you could use instead but more of how and where events can be fired.
Here's what I just did in wanting to capture one bit of information whenever the user pans in a Map Frame:
In my BaseCommand class, I added the event handler declaration:
private ESRI.ArcGIS.Display.ITransformEvents_VisibleBoundsUpdatedEventHandler delVisibleBoundsUpdated;
In the same class, I added what the event does when it is called (as an example):
private void OnVisibleBoundsChanged(ESRI.ArcGIS.Display.IDisplayTransformation sender, bool theSizeChanged)
Now to wire the event to the MxDoc, I could have added it to the OnCreate function but I wanted to fire the event only when the public function is called. In other words, the event will fire only when the user users my command. I wired the event delegate like this:
delVisibleBoundsUpdated = new ESRI.ArcGIS.Display.ITransformEvents_VisibleBoundsUpdatedEventHandler(OnVisibleBoundsChanged);
((ESRI.ArcGIS.Display.ITransformEvents_Event)pMxDoc.ActivatedView.ScreenDisplay.DisplayTransformation).VisibleBoundsUpdated += delVisibleBoundsUpdated;
And in the same public method, I link the delegate to the active MxDoc:
There are probably better places to put these or to trap so it is only called when I wanted it to, so I guess I will still be playing around with this.