First of all, there is no a functional parent-child relationship between forms. Formally, a
Form
is a
Control
, so it has the
Parent
property, but an attempt to make one form a child of anything will throw an exception. It can be changed by assigning false to the property
TopLevel
, but I would recommend to never do it. From the other hand, it's very important to use the property
Owner
and form ownership relationship, if you have more than one non-modal form (not the best UI style though, I would rather recommend to have only one). Please see:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx[
^].
We did not yet came to your question. This 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[
^].
Please also see other solutions in this discussion. If the application is simple enough, the solution could be as simple as declaring of some
internal
property in one form and passing a reference to the instance of one form to the instance of another form. For more complex projects, such violation of strictly encapsulated style and
loose coupling could add up the the
accidental complexity of the code and invite mistakes, so the well-encapsulated solution would be preferable.
Please see also:
http://en.wikipedia.org/wiki/Accidental_complexity[
^],
http://en.wikipedia.org/wiki/Loose_coupling[
^].
—SA