Podczas programowania aplikacji Windows Forms niezmiennie będziesz potrzebował pobrać zmienne z drugiego okna formularza, na przykład formularza opcji lub monitu o wyszukiwanie wyskakujące.
Większość przewodników pokaże ci, że musisz otworzyć drugi formularz za pomocą ShowDialog (), który blokuje użytkownikowi robienie czegokolwiek innego, dopóki nie zamkną drugiego okna formularza. To nie będzie działać dobrze na przykład w oknie dialogowym Znajdź / Zamień. Nie będzie też dobrze działać w przypadku niestandardowych, wyrysowanych formularzy popup.
Szybkim sposobem przekazywania zmiennych między formularzami jest użycie Delegatów. Można ustawić moduł obsługi zdarzenia zamknięcia dla drugiego formularza i obsługiwać zdarzenie w pierwszym formularzu. Pozwala to na przechwytywanie zmiennych przed zamknięciem drugiego okna formularza.
W tym ćwiczeniu przyjmiemy, że mamy dwie formy:
Główna forma
OptionsForm
Będziemy dalej zakładać, że kliknęliśmy jakiś przycisk, który otwiera OptionForm z wywołaniem metody Show (). Teraz rzućmy okiem na magię:
... snip ....
OptionsForm theform = new OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();
private void theform_Closing (nadawca obiektu, CancelEventArgs e)
OptionsForm theform = (OptionsForm) sender;
// Chwyć zmienną z formularza opcji. Formularz opcji powinien ustawić tę zmienną przed jej zamknięciem, a zmienna powinna być oznaczona jako publiczna.
string localvar = theform.thestringvariable;
To wszystko.