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[
^].
Now, the different "DLLs" (in .NET, the main unit and one of the central points of technology is
assembly, and DLL or not DLL, any PE file is merely one or the only module of an assembly) makes almost no difference. If your assemblies are composed in one application by referenced them, the only major difference is access modifiers: in the same assembly, accessible types and members can be
public
,
protected
or
internal
, while working across different assemblies requires accessible types and members to be
protected
(for members of derived classes) or
public
.
—SA