Pass variabler mellem Windows Forms Windows uden ShowDialog ()
Når du programmerer en Windows Forms-applikation, skal du altid få variable fra et andet formvindue, som f.eks. Et valgformular eller popup-søgeprompt.
De fleste guider derude vil fortælle dig, at du skal åbne den anden formular med ShowDialog (), som blokerer brugeren for at gøre noget andet, indtil de har lukket det andet formularvindue. Dette vil ikke fungere meget godt for en find / erstatningsdialog, for eksempel. Det fungerer også ikke rigtig godt for brugerdefinerede popup-formularer.
Den hurtige måde at passere variabler mellem formularerne på er at bruge delegerede. Du kan indstille en eventhandler til afslutningsbegivenheden i den anden formular og håndtere begivenheden i den første formular. Dette giver dig mulighed for at indfange variabler, før det andet formularvindue er lukket.
Til denne øvelse vil vi antage, at vi har to former:
MainForm
OptionsForm
Vi vil yderligere antage, at vi har klikket på en slags knap, der åbner OptionsForm med et Show () metodeopkald. Lad os nu se på magien:
.... snip ... .
OptionsForm theform = new OptionsForm ();
theform.Closing + = ny CancelEventHandler (theform_Closing);
theform.Show ();private void theform_Closing (objekt afsender, CancelEventArgs e)
OptionsForm theform = (OptionsForm) afsender;
// Grib variablen fra indstillingsformularen. Indstillingsformularen skal angive denne variabel, inden den lukkes, og variablen skal markeres som offentlig.
streng localvar = theform.thestringvariable;
Det er alt der er til det.