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[
^].
I would also add that your design does not seem good. I would strongly advise to review it, but I cannot suggest any particular design as right now I don't know your goals. First of all, I would avoid multi-form design at all. In most cases, one but more complex form is quite enough, but it also more convenient for the users. What you have now as a separate form can become some container control. Such as
Panel
or
TabPage
. You can hide one panel and show another one, you can activate different pages of
TabControl
, one at a time, or even develop more complex dockable design (similar to that of Visual Studio). Please think about it.
Happy New Year!
—SA