Jim,
I have to first strongly disagree with your premise. Objects going out of scope from other objects that have references to them is sheer madness. It's much more chaotic than having an object not destruct because you have a dangling object reference that you forgot to properly clean up.
>And I must say I've never been comfortable with the concept of issuing a command, having it *appear* to have executed it function, only to find out (indirectly) that it did *NOTHING*.
You can't call and event and cause it to happen. You can make a call to an overridden event method and that code will run, but the baseclass behavior underlying the real event will not happen. The clearest example is calling KeyPress, fine you can call it all you want, but that doesn't put a keystroke into the control.