Procházet proměnné mezi Windows Forms Windows bez ShowDialog ()
Při programování aplikace Windows Forms budete vždy muset získat proměnné z druhého okna formuláře, jako je například formulář s volbami nebo výzva pro vyskakovací okna.
Většina průvodců tam vám řekne, že musíte otevřít druhý formulář s ShowDialog (), který zabraňuje uživateli dělat cokoli jiného, dokud neuzavře druhé okno formuláře. To nebude fungovat velmi dobře například při hledání / nahrazení dialogu. Také nebude fungovat velmi dobře pro vytažené popup formuláře.
Rychlá cesta pro předávání proměnných mezi formuláři používá Delegáti. Můžete nastavit eventhandler pro událost Zavření druhého formuláře a zpracovat událost v prvním formuláři. To umožňuje zachytit proměnné před uzavřením druhého okna formuláře.
Pro toto cvičení předpokládáme, že máme dvě formy:
MainForm
OptionsForm
Budeme dále předpokládat, že jsme klikli na nějaké tlačítko, které otevře OptionsForm pomocí volání metody Show (). Nyní se podívejme na magii:
.... snip ... .
MožnostiForm theform = new OptionsForm ();
theform.Closing + = nový CancelEventHandler (theform_Closing);
theform.Show ();private void theform_Closing (odesílatele objektu, CancelEventArgs e)
OptionsForm theform = (OptionsForm) odesílatele;
// Uchopte proměnnou z formuláře možností. Formulář voleb by měl nastavit tuto proměnnou ještě předtím, než se zavře, a proměnná by měla být označena jako veřejná.
řetězec localvar = theform.thestringvariable;
To je vše, co je k tomu.