First of all, it's good to understand that there is no functional relationship parent-child between forms. Even though formally one can use the property inherited
Control.Parent
property for a form, it is done defunct, so an exception will be thrown on attempt to insert on form into another. You still can do it by assigning
Form.TopLevel
property value to false, but the result is ugly: one form with all non-client area inside another one. This is not a useful technique. There are no situation where it can be used.
In a normal
System.Windows.Forms
application all forms are equal, but the main form, which is defined by the parameter passed to
Application.Run
. From the other hand, it is very important to use another relationship between the form: owner/owned form, please see:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.ownedforms.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.addownedform.aspx[
^].
I understand that the problem of your question is just terminology, but this is something you need to understand.
Now, what you are asking about, is the popular question about form collaboration. The most robust solution is implementation of an appropriate interface in form class and passing the interface reference instead of reference to a "whole instance" of a Form. Please see my past solution for more detail:
How to copy all the items between listboxes in two forms[
^].
—SA