If-Koubou

Pass varijable između oblika sustava Windows Windows bez ShowDialog ()

Pass varijable između oblika sustava Windows Windows bez ShowDialog () (Kako da)

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:

.... odrezati ....

OptionsForm theform = novi OptionsForm ();
theform.Closing + = novo CancelEventHandler (theform_Closing);
theform.Show ();

privatni void theform_Closing (pošiljatelj objekta, CancelEventArgs e)

OptionsForm theform = (OptionsForm) pošiljatelj;

// Grabajte varijablu iz obrasca opcija. Oblik opcija treba postaviti ovu varijablu prije nego što se zatvori, a varijabla bi trebala biti označena kao javna.
string localvar = theform.thestringvariable;

To je sve.