Kada programirate aplikaciju Windows Forms, uvijek ćete morati dobiti varijable iz drugog prozora formata, kao što je obrazac opcija ili upit za traženje skočnih prozora.
Većina vodiča vani će vam reći da morate otvoriti drugi obrazac s ShowDialog (), što blokira korisnika od bilo čega drugog dok ne zatvore drugi prozor obrasca. Na primjer, ovo neće raditi vrlo dobro za dijaloški okvir za pronalaženje / zamjenu. Također neće raditi jako dobro za prilagođene popup oblike.
Brz način prijenosa varijabli između oblika koristi se Delegati. Možete postaviti eventhandler za događaj zatvaranja drugog obrasca i obraditi događaj u prvom obliku. To vam omogućuje da snimite varijable prije nego što se drugi prozor oblika zatvori.
Za ovu vježbu pretpostavljamo da imamo dva oblika:
MainForm
OptionsForm
I dalje ćemo pretpostaviti da smo kliknuli na neku vrstu gumba koji otvara formulu OptionsForm s metodom poziva Show (). Pogledajmo sada magiju:
……. 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;
}
To je sve.