То, что вы описываете, выглядит как шаблон посредника , в котором объекты обмениваются сообщениями. Эти сообщения могут быть реализованы как события, обратные вызовы или любой другой механизм.
Вы можете использовать реализацию, такую как класс MVVM Light Messenger
(эта структура предназначена для использования с WPF и Silverlight, но вы можете получить код для этого конкретного класса и использовать его в WinForms)
// Register for a specific message type
Messenger.Default.Register(this, DoSomething);
...
// Called when someone sends a message of type TypeOfTheMessage
private void DoSomething(TypeOfTheMessage message)
{
// ...
}
// Send a message to all objects registered for this type of message
Messenger.Default.Send(new TypeOfTheMessage(...));
Большое преимущество класса Messenger
в отношении статического события заключается в том, что он использует слабые ссылки , поэтому он не мешает сборке подписанных объектов, что снижает риск утечек памяти.
Подробную информацию о классе Messenger
см. в этой ссылке