Pass Variabler mellom Windows Forms Windows uten ShowDialog ()
Når du programmerer en Windows Forms-applikasjon, må du alltid få variabler fra et annet skjermvindu, for eksempel et valgskjema eller en popup-søkeprompt.
De fleste guider der ute vil fortelle deg at du må åpne den andre skjemaet med ShowDialog (), som blokkerer brukeren fra å gjøre noe annet før de har lukket det andre skjermvinduet. Dette vil ikke fungere veldig bra for en finne / erstattingsdialog, for eksempel. Det vil heller ikke fungere veldig bra for tilpassede trukket popup-skjemaer.
Den raske måten å passere variabler mellom skjemaene, er ved hjelp av delegerte. Du kan angi en eventhandler for Lukkhendelsen av den andre skjemaet, og håndter hendelsen i det første skjemaet. Dette lar deg fange variabler før det andre skjermvinduet er stengt.
For denne øvelsen kommer vi til å anta at vi har to former:
MainForm
OptionsForm
Vi skal videre anta at vi har klikket på en slags knapp som åpner OptionsForm med et Show () -metodeanrop. La oss nå se på magien:
.... klipp ... .
OptionsForm theform = new OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();privat ugyldig theform_Closing (objekt avsender, CancelEventArgs e)
OptionsForm theform = (OptionsForm) avsender;
// Ta tak i variabelen fra alternativskjemaet. Alternativet skal angi denne variabelen før den lukkes, og variabelen skal merkes som offentlig.
streng localvar = theform.thestringvariable;
Det er alt der er til det.