Przekaż zmienne między Windows Forms Windows bez ShowDialog ()
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 zamknie drugiego okna formularza. To nie będzie działać dobrze na przykład w oknie dialogowym Znajdź / Zamień. Nie będzie też działać dobrze 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łużyć 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ę:
... fantastyczna okazja… .
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.