The VS.NET designer creates a private data member of type IContainer called
"components" that it uses to keep track of all these non-visual components in
the form. It uses this variable in the generated Dispose method to dispose all
these non-visual components.
This "components" object (if one is created by the designer, could be null if
there are no components in the form) has a Components property that you can use
to cycle through the components in the Form.
You can provide you own property in the form to access this variable from outside.
I'm not sure why the Components property of the form itself was not used for this.
Time Management Guide - Make better use of your time