Wewnątrz formularza:
void SubscribeToEvent(OtherClass theInstance)
{
theInstance.SomeEvent += this.MyEventHandler;
}
void MyEventHandler(object sender, EventArgs args)
{
// Do something on the event
}
Wystarczy zapisać się do wydarzenia na drugiej klasy ten sam sposób, jak do zdarzenia w formularzu. Trzy ważne rzeczy do zapamiętania:
1) Musisz upewnić się, że twoja metoda (event handler) ma odpowiednią deklarację, aby dopasować się do typu delegata wydarzenia na drugiej klasie.
2) Zdarzenie na drugiej klasie musi być widoczne dla Ciebie (np. Publiczne lub wewnętrzne).
3) Subskrybuj prawidłowe wystąpienie klasy, a nie samą klasę.
Dzięki za świetne rozwiązanie. Zrozumiałem to zaraz po tym, jak napisałem pytanie, a moje rozwiązanie jest bardzo podobne do twojego. – sarsnake
http://stackoverflow.com/questions/8335131/winform-events-in-another-class-net2-simplify-delegate do implementacji w .NET2 –
@CSgarpAtl Widzę, że została wybrana jako poprawna odpowiedź. Niestety nie mogę go uruchomić, mimo że podążałem za każdym krokiem. Próbuję uczynić mój główny formularz świadomym metody, która wydarzyła się w mojej kontroli użytkownika. – Disasterkid