Хороший способ - объявить делегатов в форме, которые хотят начать общение.Вам нужен делегат и функция обратного вызова:
public delegate void SetValueDelegate(string value);
public SetValueDelegate SetValueCallback;
Затем к этому делегату можно прикрепить другую форму.В этот момент обе формы должны знать друг друга, но не после этого момента:
firstForm.SetValueCallback += new SetValueDelegate(secondForm.SetValueFunction);
Вторая форма должна объявить функцию, которая соответствует определению делегата:
public void SetValueFunction(string value)
{
// do something
}
Теперьпервая форма может использовать делегат для использования функции второй формы (и все другие формы или классы, которые были присоединены к делегату:
SetValueCallback(txtParam.Text);
Edit: сделал полный пример
using System;
namespace DelegateTest
{
public delegate void SetValueDelegate(string value);
public class Class1
{
public SetValueDelegate SetValueCallBack;
public void Test()
{
if(SetValueCallBack != null)
{
SetValueCallBack("Hello World!");
}
}
}
public class Class2
{
public void SetValueFunction(string value)
{
Console.WriteLine(value);
}
}
public class Launcher
{
public static void Main(string[] args)
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
c1.SetValueCallBack += new SetValueDelegate(c2.SetValueFunction);
c1.Test();
}
}
}