Mozesz zwrocic cokolwiek na co masz ochote... pamietaj ze wszystko mozesz sobie castowac na object i pozniej z powrotem na wlasciwy typ.
Co do Twojego problemu to ja go rozwiazuje przez atrybuty. Po prostu forma, kontrolka, czy cokolwiek innego, ktora ma sie komunikowac sie z inna zawiera w sobie pole z referencja na ten obiekt, a jego wartosc jest ustawiana przez atrybut. Mozna tez sie bawic i np przy tworzeniu obiektow ustawiac odpowiednie referencje w konstruktorze, jednak w bardziej dynamicznych przypadkach przydkach atrybuty lepiej sie sprawdzaja.
Ah.. fakt.. .przyklad...
w jakiejs kolejnosci musisz tworzyc te formy, prawda? Jesli nie dzialaja na osobnych watkach to bezproblemu (z watkami juz nie jest az tak latwo).
kod formy 2
Button b;
public SetButtonRef(Button b)
{
set{ this.b = b; }
}
kod formy 1;
Button btnCosRobi; // reszta ustawiana w designerze
void TworzeDrugaForme()
{
Form2 f2 = new Form2();
f2.SetButtonRef(this.btnCosRobi);
}
i teraz bezproblemu mozesz odwolywac sie do buttona na formie pierwszej z formy drugiej