I found much of this at Code Project, but I think my implementation is cleaner.
Since a component doesn’t have a Parent property like a control does it is often difficult to Invoke in a component which is a pity since a component is more likely to need it. This solution creates an abstract class that adds the Parent property to the component class. If you merely derive your class from the AdvancedComponent class instead of from the Component class you will get the Parent property as well as the FindForm() method.
/// Overrides the ISite property
/// so that it is set when the
/// component is placed on a form.
/// Creates a Parent property
/// that can be used to find the
/// parent form.
/// Implements a FindForm method
/// similar to Control.FindForm
/// <returns>The contents of the Parent property</returns>