Pri programovaní aplikácie Windows Forms budete vždy musieť získať premenné z druhého okna formulára, ako napríklad formulár s možnosťami alebo výzva na vyhľadávanie pop-up.
Väčšina sprievodcov vám povie, že musíte otvoriť druhý formulár pomocou aplikácie ShowDialog (), ktorá zabraňuje používateľovi robiť čokoľvek iné, kým neuzavrie druhé okno formulára. To nebude fungovať veľmi dobre napríklad v dialógu nájsť / nahradiť. To tiež nebude fungovať veľmi dobre pre vlastné nakreslené vyskakovacie formuláre.
Rýchly spôsob prenosu premenných medzi formulármi používa delegátov. Môžete nastaviť eventhandler pre udalosť ukončenia druhého formulára a spracovať udalosť v prvom formulári. To umožňuje zachytiť premenné predtým, ako sa zatvorí druhé okno formulára.
Pre toto cvičenie budeme predpokladať, že máme dve formy:
MainForm
OptionsForm
Budeme ďalej predpokladať, že sme klikli na nejaké tlačidlo, ktoré otvorí OptionsForm s volaním metódy Show (). Teraz sa pozrime na kúzlo:
……. 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 všetko, čo je k tomu.