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 også ikke fungere veldig bra for egendefinerte tegnet popup-skjemaer.
Den raske måten å passere variabler mellom skjemaene, er ved hjelp av delegerte. Du kan sette 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 skjemavinduet er lukket.
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:
……. snip…….
OptionsForm theform = new OptionsForm(); theform.Closing += new CancelEventHandler(theform_Closing); theform.Show();
}
private void theform_Closing(object sender, CancelEventArgs e) {
OptionsForm theform = (OptionsForm)sender;
// Grab the variable from the options form. The options form should set this variable before it closes, and the variable should be marked as public. string localvar = theform.thestringvariable;
}
Det er alt der er til det.