What do you do to pass information between forms? Forward is straight forward (sorry) using Properties or maybe parameters in a New() or DoStuff() method, but what about se
One thing I had success doing was to create a lightweight publish / subscribe eventing system in the application. This was in .net 1.1 and not sure how it would change with generics. Essentially we had a singleton which contained a hashtable with a string key, and multi-cast delgates.
The singleton had methods like RegisterForEvent(string key, delegate handler), RaiseEvent(key,data) etc...
We then defined a standard delegate and said all users must implement this pattern for example our handlers had to be: void method(object sender, CustomEventArgs args). Publishers would define their own derived class of CustomEventArgs.
The nice thing is this allowed a completly decoupled system to be built. We had many assemblies and didn't have any issue just need to ensure your eventargs are defined where other subs could get at them.
We had what we called different subsystems for example we had one which monitored the internet connection and when it raised an event, the UI would change to indicate the status of their connection, we also had a queueing service which would post messages to the server, when it saw the connection dropped we would stop posting.
The downside is it is very looseley coupled at least our implementation was but there are ways to improve upon that.