You could declare your own Disposing event. Raising that event would be the first thing you do in the Dispose method, so the sequence of happenings would be like this:
Call Dispose method
Disposing event raised
Object disposed
Disposed event raised
Note that you would have to use a different name, like BeforeDisposed, because there is already a Disposing property.
Having said that, the HandleDestroyed event is raised when the window handle is destroyed. The object cannot and will not be cleaned up until the
HandleDestroyed event handler has completed, so you can be absolutely sure that you can operate on the control normally in the HandleDestroyed event handler. The only thing you cannot do is display the control because at that point it has no window handle. Everything else about it is normal though.